在旧版Python中,当你创建一个类时,可以继承自object
。据我所知,object
是一种特殊的内置Python元素,它使你的类成为新式类。
那么对于更新的版本(> 3.0和2.6)呢?我在谷歌上搜索了object
类,但由于明显的原因,结果太多了。
在旧版Python中,当你创建一个类时,可以继承自object
。据我所知,object
是一种特殊的内置Python元素,它使你的类成为新式类。
那么对于更新的版本(> 3.0和2.6)呢?我在谷歌上搜索了object
类,但由于明显的原因,结果太多了。
在Python 3中,您无需从 object
继承就可以拥有新的样式。所有类都是新式类。
object
,无论是否显式地在类定义中使用(object)
。 - u0b34a0f6ae我知道这是一个老问题,但值得注意的是即使在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 时,我们得到的行为与允许隐式继承时不同。