需求: 想给抽象方法类实现函数式调用,该怎么写
分开写,我知道怎么,但是怎么让一个类同时具有两种特性?
抽象方法类
class A(ABC): def __init__(self, name): self.name = name @abstractmethod def run(self): pass class B(A): def __init__(self, name): super().__init__(name) def run(self): print(self.name) 实现函数式调用
class MetaB(type): def __call__(cls, *args, **kwargs): obj = super().__call__(*args, **kwargs) return obj.run() class B(metaclass=MetaB): def run(self): pass 怎么让 B 同时拥有两种特性?按我的理解要想让一个类实现函数式调用,就得在它的元类里面重载__call__方法,可是抽象方法类实现的过程中已经定义了元类是 ABCMeta ,这种情况该怎么覆写呢?
