我正在实现一个元类,如下所示:
from abc import ABCMeta
class Algorithm(metaclass=ABCMeta):
# lots of @abstractmethods
# Non-abstract method
@property
def name(self):
''' Name of the algorithm '''
return self.__class__.__name__
class MyLittleAlgorithm(Algorithm):
def magic(self):
return self.name
那么,我的印象是,下面两张照片的结果应该是一样的。在
^{pr2}$但事实上我得到:
>>> print(a.magic)
<bound method MyLittleAlgorithm.magic of <__main__.MyLittleAlgorithm object at 0x11242f438>>
>>> print(a.name)
MyLittleAlgorithm
我追求的是后一种行为。(我希望从Algorithm
继承的每个算法都有一个.name
@属性,它可以用来引用自己。)
请注意,我不想instantiate the meta class。我只希望它的子实例具有.name
@属性,而不必显式地为每个实例编写代码。在
目前没有回答
相关问题 更多 >
编程相关推荐