gpt4 book ai didi

python - __new__ 覆盖不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:56 35 4
gpt4 key购买 nike

我可以知道为什么 myClass1myClass2 在覆盖 __new__() 方法时表现不同吗?推荐使用哪种方式来编写类,为什么?我认为 myClass1(): 甚至没有调用 __new__(cls),对吗?

$ python
Python 2.7.5+ (default, Sep 19 2013, 13:49:51)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class myClass1():
... def __new__(cls):
... print cls.__name__
...
>>> class myClass2(object):
... def __new__(cls):
... print cls.__name__
...
>>> o1 = myClass1()
>>> o2 = myClass2()
myClass2
>>>

最佳答案

当您从 object 继承时,您正在创建一个 new-style class .不继承 object 使其成为旧式类。

旧式类不支持 __new__ 构造函数。

在 Python 3 中,所有类都是新式的,如果没有指定明确的基类,object 基类是隐式的。

关于python - __new__ 覆盖不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21780620/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com