擅长:python、mysql、java
<p>它是一个mixin,用于定义<code>execute</code>方法的类,例如:</p>
<pre><code>class ModbusClientProtocol(protocol.Protocol, ModbusClientMixin):
</code></pre>
<p>mixin将方法添加到其他类中,不应该自己使用。你知道吗</p>
<p>如果您想正确地键入annotate,则必须如下所示:</p>
<pre><code>class Executable(ABC):
@abstractmethod
def execute(self):
pass
class ModBusClientMixin:
def read_coils(self: Executable, address, count=1, **kwargs):
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
# Expects self to conform to Executable interface,
# i.e. to be used in a class that implements execute().
self.execute()
</code></pre>
<p>由于Python严重依赖于duck类型,而类型注释是一个相对较新的添加项,因此它们经常被省略,并被冗长的文档所取代,或者期望开发人员认识到mixin的用途,或者它是一个内部实现细节,以至于它没有被显式地文档化。你知道吗</p>