我开始大量使用 python dataclasses 模块并发现它非常有用。我特别喜欢可以在每个字段上设置的标志,允许切换比较、初始化等。
然而,我经常发现,有一个领域我希望从班级的沉迷行为中省略。在某些情况下,使用 dict_factory 参数可能会实现这一点,但有时,某个字段会导致 asdict 函数在通过使用 dict_factory 省略该字段之前引发异常。
其他人可以建议一种干净的方法来做到这一点吗?添加到数据类模块中不是一个有用的附加标志吗?
我想知道是否可以在 python 中使用带有抽象基类的多重继承。似乎应该是可能的,但无法以一种或另一种方式找到声明。
基本的 ABC 示例:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
由于“hello”未在“Child”中实现,这将失败。
我想知道如何将 ABC 与多重继承结合起来。我想让“BaseABC”或“Child”也从其他一些单独的类继承。明确:
from abc import ABC, abstractmethod
class BaseABC(ABC, dict):
@abstractmethod
def hello(self):
pass
class Child(BaseABC):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
这不会像第一种情况那样以预期的方式失败。还:
from abc import ABC, abstractmethod
class BaseABC(ABC):
@abstractmethod
def hello(self):
pass
class Child(BaseABC, dict):
pass
child = Child()
Run Code Online (Sandbox Code Playgroud)
这也不会失败。我怎样才能要求“孩子”来实现“你好”?