昨天我看到了 Raymond Hettinger 的一条推文。他用__set_name__
.
当我__set_name__
为我的类声明时,该名称将成为实例的名称。所有者成为Foo
,这是意料之中的,但我无法弄清楚这何时以及如何有用。
class Bar:
def __set_name__(self, owner, name):
print(f'{self} was named {name} by {owner}')
class Foo:
x = Bar()
y = Bar()
那打印
<__main__.Bar object at 0x7f48f2968820> was named x by <class '__main__.Foo'>
<__main__.Bar object at 0x7f48f2968c70> was named y by <class '__main__.Foo'>