假设我有一些代码,其中我希望类具有一些特性,如属性或方法,但我不想使用继承来实现这一点,而是更喜欢组合。
我将如何强制执行作为参数接收的类/对象实际呈现这些特征?
继承示例:
from abc import ABC, abstractmethod
class FooBase(ABC):
@abstractmethod
def do_stuff(self):
pass
class Foo(FooBase):
def do_stuff(self):
return 'hello'
def some_function(obj: FooBase):
print(obj.do_stuff())
在上述示例中,
some_function
正在强制(通过MyPy静态地)执行
obj
参数是的子类
FooBase
.
相反,我希望
some\u函数
强制执行(静态,通过MyPy)
obj公司
有一个
do_stuff
方法,但不一定是
食品基地
.