为什么__new__在 Python 开发中需要它以及何时使用它?
关于什么是魔术方法,有一个__new__很好的评论:一个静态方法,在创建类的实例时调用。总的来说,起初他,然后__init__,我认为他理解正确。
我很惭愧地承认,但我从未在实践中看到过这种神奇方法的应用,即使在一个简单的玩具示例上它看起来也是多余的。
class Foo(object):
def __new__(cls, *args, **kwargs):
print "Creating Instance"
instance = super(Foo, cls).__new__(cls, *args, **kwargs)
return instance
def __init__(self, a, b):
self.a = a
self.b = b
def bar(self):
pass
有人可以举一个简单的例子,说明什么是有效的用途__new__,并解释为什么需要它以及何时应该使用它?
从官方文档:
以下是该方法的实际应用示例
__new__():辛格尔顿
考试:
pathlib模块中的使用示例(来自 Python 3.x 中的标准库):
注意:如果您对 Python 中真实和正确使用方法/函数的示例感兴趣,那么最好看看 Python 标准库的作者如何使用它们:
转到目录
<Python_installation>/Lib并查看您感兴趣的方法存在于哪些文件中def __new__::在编辑器中打开找到的文件,找到您感兴趣的行并研究 Python 创建者的用例......