设计模式

Mixin类

委托模式,伪代码如下:

class VoiceMixin:
    def words(self, something):
        print("voice: %s" % something)
        return "voice: %s" % something

class Dog(VoiceMixin):
    def __init__(self):
        pass

if __name__ == '__main__':
    dog = Dog()
    dog.words('汪汪汪')

备注

Mixin类应该是单一职责的

抽象模式

doc:

https://docs.python.org/zh-cn/3/library/abc.html

from abc import ABCMeta, abstractmethod

class MyABC(metaclass=ABCMeta):
    @abstractmethod
    def my_abstract_method(self):
        pass

    @classmethod
    @abstractmethod
    def my_abstract_classmethod(cls):
        pass

    @staticmethod
    @abstractmethod
    def my_abstract_staticmethod(self):
        pass

    @property
    @abstractmethod
    def my_abstract_property(self):
        pass

@my_abstract_property.setter
@abstractmethod
def my_abstract_property(self, val):
    pass