在较旧的python版本中,当你在python中创建一个类时,它可以继承自 object ,据我所知,这是一个特殊的内置python元素,允许你的对象成为一种新风格对象
新版本(> 3.0和2.6)怎么样?我用google搜索了类对象,但是得到了很多结果(显而易见的原因)。任何提示?
感谢!
答案 0 :(得分:65)
您不需要继承object
以在python 3中使用新样式。所有类都是新式的。
答案 1 :(得分:53)
我意识到这是一个古老的问题,但值得注意的是,即使在python 3中,这两件事情也不尽相同。
如果您明确继承自object
,那么您实际所做的就是继承builtins.object
,无论当时指向的是什么。
因此,我可能有一些(非常古怪)模块由于某种原因覆盖对象。我们称之为第一个模块“newobj.py”:
import builtins
old_object = builtins.object # otherwise cyclic dependencies
class new_object(old_object):
def __init__(self, *args, **kwargs):
super(new_object, self).__init__(*args, **kwargs)
self.greeting = "Hello World!"
builtins.object = new_object #overrides the default object
然后在其他文件中(“klasses.py”):
class Greeter(object):
pass
class NonGreeter:
pass
然后在第三个文件中(我们实际可以运行):
import newobj, klasses # This order matters!
greeter = klasses.Greeter()
print(greeter.greeting) # prints the greeting in the new __init__
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting) # throws an attribute error
所以你可以看到,在显式继承自object的情况下,我们得到的行为与允许隐式继承的行为不同。