我理解是什么__new__(以及它与之有什么不同__init__)所以我对定义不感兴趣,我对何时以及如何使用感兴趣__new__.
文件说:
在一般情况下,你不应该需要重写
__new__,除非你继承一个不变型像str,int,unicode或tuple
但我无法想到使用其他情况__new__或如何正确使用它(例如,当子类化不可变类型或为什么在这种情况下需要它时).
那么,何时,为什么以及如何使用__new__?
我对用例很感兴趣,而不是它的用途(我知道它的作用).
Lau*_*low 12
回答我自己,我已经习惯了
__new__)__call__我认为也可以使用)datetime.datetime类(它是不可变的),如果没有参数的instanciated,则返回当前时间,如果strptime使用单个字符串参数调用,则调用参数的结果__new__如果你想改变用于构造不可变的参数,你需要在子类化不可变类型时,如我在datetime示例中所希望的那样,或者如果你根本不想调用父类__new__,而是返回一个以另一种方式创建的实例,甚至是完全不同的类型.当你进入__init__它时,以任何方式改变对象为时已晚,所以你需要这样做__new__.
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |