python-3.x __init__()和super().__init__之间的主要区别是什么

iyfjxgzm  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(159)

我是编程新手,所以,如果我问的问题看起来很傻的话,我很抱歉。我知道我不能在一个类中有两个init方法,因为函数重载。但是,为什么当初始化一个子类时,我可以定义一个新的init方法,并使用超级().init方法或子类init方法中的父类init方法。我只是对2init的概念有点困惑方法在同一时间运作。我已经被困在这一段时间,请帮助

class Employee:
    emps = 0
    def __init__(self,name,age,pay):
        self.name = name
        self.age = age
        self.pay = pay

    
class Developer(Employee):
    def __init__(self,name,age,pay,level):
        Employee.__init__(self,name,age,pay)
        self.level = level
fcipmucu

fcipmucu1#

init”是python类中的一个保留方法。在面向对象的术语中称为构造函数。调用此方法时,允许类初始化类的属性。

#base class
class State():
   def __init__(self):
      print("In the state class")
      self.state1= "Main State"

#derived class
class HappyState():
   def __init__(self):
      print("In the happystate class")
      self.state2= "Happy State"
      super().__init__()

a=HappyState()
print(a.state1)
print(a.state2)

超级()函数允许我们避免显式地使用基类名称。()函数是动态调用的,这与其他语言不同,因为它是动态语言。()函数返回一个代表父类的对象。在子类中,父类可以使用超()函数。它返回一个超类的临时对象,这允许其子类访问其所有方法。使用超类()关键字,我们不需要指定父类名就可以访问它的方法。

#base class1
class State():
   def __init__(self):
      print("In the State class")
      self.state1= "Main State"

#base class2
class Event():
   def __init__(self):
      print("In the Event class")
      self.event= "Main Event"

#derived class
class HappyState(State,Event):
   def __init__(self):
      print("In the happystate class")
      super().__init__()       #Only calls Base Class 1
a=HappyState()

查看更多

wh6knrhe

wh6knrhe2#

super()函数给予访问父类或同级类的方法和属性
checkout :https://www.geeksforgeeks.org/python-super/

相关问题