Kar*_*ara 120 python inheritance
我发现以下两项工作:
class Foo():
def a(self):
print "hello"
class Foo(object):
def a(self):
print "hello"
Run Code Online (Sandbox Code Playgroud)
所有Python类都应该扩展对象吗?没有扩展对象有任何潜在的问题吗?
Fre*_*Foo 108
在Python 2中,不继承object
将创建一个旧式类,除了其他效果之外,它会导致type
不同的结果:
>>> class Foo: pass
...
>>> type(Foo())
<type 'instance'>
Run Code Online (Sandbox Code Playgroud)
与
>>> class Bar(object): pass
...
>>> type(Bar())
<class '__main__.Bar'>
Run Code Online (Sandbox Code Playgroud)
多重继承的规则也有所不同,我甚至不会在这里总结.我见过的关于MI的所有好的文档都描述了新式的类.
最后,旧式类已经在Python 3中消失了,继承object
也变得隐含了.所以,除非你需要对旧软件进行反向比较,否则总是喜欢新的样式类.
N R*_*awa 17
在python 3中,您可以用三种不同的方式创建一个类,在内部它们都是相同的(参见示例).无论你如何创建一个类,python 3中的所有类都继承自称为object的特殊类 .类对象 是python中的基础类,它提供了许多功能,如双下划线方法,描述符,super()方法,property()方法等.
例1.
class MyClass:
pass
Run Code Online (Sandbox Code Playgroud)
例2.
class MyClass():
pass
Run Code Online (Sandbox Code Playgroud)
例3.
class MyClass(object):
pass
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44742 次 |
最近记录: |