在试验时,我写道:
class Bag:
pass
g = Bag()
print(g)
Run Code Online (Sandbox Code Playgroud)
哪个给了我:
<__main__.Bag object at 0x00000000036F0748>
Run Code Online (Sandbox Code Playgroud)
这令我感到惊讶.当我尝试初始化它时,我预计会出现错误,因为我没有定义__init___.
为什么不是这种情况?
Kim*_*ais 10
您只需要覆盖要更改的方法.
换一种说法:
如果不覆盖__init__,__init__将调用超类的方法.
例如
class Bag:
pass
Run Code Online (Sandbox Code Playgroud)
如果相当于:
class Bag:
def __init__(self):
super(Bag, self).__init__()
Run Code Online (Sandbox Code Playgroud)
此外,__init__确实是可选的.这是一个初始化的一个实例.
当你实例化一个类(通过调用它)的构造函数的类(类方法__new__)被调用.构造函数返回一个__init__被调用的实例.
所以在实践中甚至:
class Bag:
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
会工作得很好.
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |