【发布时间】:2016-08-02 02:32:34
【问题描述】:
这个问题与 What does 'super' do in Python? 、 How do I initialize the base (super) class? 和 Python: How do I make a subclass from a superclass? 的帖子有关,它描述了从 SubClass 中初始化 SuperClass 的两种方法
class SuperClass:
def __init__(self):
return
def superMethod(self):
return
## One version of Initiation
class SubClass(SuperClass):
def __init__(self):
SuperClass.__init__(self)
def subMethod(self):
return
或
class SuperClass:
def __init__(self):
return
def superMethod(self):
return
## Another version of Initiation
class SubClass(SuperClass):
def __init__(self):
super(SubClass, self).__init__()
def subMethod(self):
return
所以我对需要明确将self作为参数传递给
SuperClass.__init__(self)
和
super(SubClass, self).__init__()。
(事实上,如果我打电话给SuperClass.__init__() 我会得到错误
TypeError: __init__() missing 1 required positional argument: 'self'
)。但是当调用构造函数或任何其他类方法时(即:
## Calling class constructor / initiation
c = SuperClass()
k = SubClass()
## Calling class methods
c.superMethod()
k.superMethod()
k.subMethod()
),self 参数被隐式传递。
我对@987654335@ 关键字的理解是,它与C++ 中的this 指针没有什么不同,但它提供了对类实例的引用。这是正确的吗?
如果总是存在当前实例(在本例中为 SubClass),那么为什么 self 需要显式包含在对 SuperClass.__init__(self) 的调用中?
谢谢
【问题讨论】:
标签: python subclass superclass super self