繁体   English   中英

鸭子打字实践-Python 3.7

[英]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 ,该类必须定义flyeatdance三种方法-否则,在尝试实例化它时会引发TypeError

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM