[英]Duck typing in practice - Python 3.7
我用Python写了一个库,我想对代码进行自我解释,但是我发现鸭式打字很难。
假设我有一个接受参数A的类。该参数必须实现飞行,吃饭和跳舞的方法。 在不阅读整个类的代码或辅助函数的代码的情况下,另一个程序员甚至我本人将如何轻松地知道参数必须实现的行为?
这些天来,我在每个类的上方定义了一个接口,其中包含说明的行为-用于自我解释的代码。
有什么想法吗? 更好的灵魂?
您的示例听起来像一个抽象类 。 您可以定义一个抽象类,并为该参数添加类型注释或显式检查其类型:
from abc import ABC, abstractmethod
class MyABC(ABC):
@abstractmethod
def fly(self):
pass
@abstractmethod
def eat(self):
pass
@abstractmethod
def dance(self):
pass
对于您的方法:
def test(param: MyABC):
if not isinstance(param, MyABC):
raise Exception("param must inherit MyABC.")
之所以MyABC
,是因为将param
传递给test
方法时,它必须继承MyABC
,并且为了继承MyABC
,该类必须定义fly
, eat
, dance
三种方法-否则,在尝试实例化它时会引发TypeError
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.