tho*_*mas 74 python python-3.x
在旧的python版本中,当你在python中创建一个类时,它可以从对象继承,这是我理解的一个特殊的内置python元素,它允许你的对象成为一个新式的对象.
那么新版本(> 3.0和2.6)呢?我用google搜索了类对象,但是得到了很多结果(显而易见的原因).任何提示?
谢谢!
Sil*_*ost 70
你不需要继承objectpython 3中的新样式.所有类都是新式的.
Phi*_*ler 64
我意识到这是一个古老的问题,但值得注意的是,即使在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
Run Code Online (Sandbox Code Playgroud)
然后在其他一些文件("klasses.py")中:
class Greeter(object):
pass
class NonGreeter:
pass
Run Code Online (Sandbox Code Playgroud)
然后在第三个文件(我们可以实际运行):
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
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到,在显式继承自object的情况下,我们获得的行为与允许隐式继承的行为不同.
| 归档时间: |
|
| 查看次数: |
14492 次 |
| 最近记录: |