从Python 3.x中的Python对象inheritance是否有必要或有用?
在python中创build一个类的时候,它可以inheritance自对象 ,就我所知,这个对象是一个特殊的内置python元素,它允许你的对象成为一个新的对象。
那么更新的版本(> 3.0和2.6)呢? 我search了类对象,但我得到了这么多的结果(出于一个显而易见的原因)。 任何提示?
谢谢!
你不需要从python 3inheritanceobject
来获得新的风格。所有的类都是新风格的。
我意识到这是一个古老的问题,但值得注意的是,即使在python 3中,这两件事也不是完全相同的东西。
如果你明确地从object
inheritance,那么你实际上在做什么是从builtins.object
inheritance, 而不pipe当时指向什么。
因此,我可能有一些(非常古怪)模块,因为某种原因覆盖了对象。 我们将第一个模块称为“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
所以你可以看到,在它明确地从对象inheritance的情况下,我们得到一个不同于你允许隐式inheritance的行为。