小编ker*_*ane的帖子

Python 数据类:省略 asdict 中的字段

我开始大量使用 python dataclasses 模块并发现它非常有用。我特别喜欢可以在每个字段上设置的标志,允许切换比较、初始化等。

然而,我经常发现,有一个领域我希望从班级的沉迷行为中省略。在某些情况下,使用 dict_factory 参数可能会实现这一点,但有时,某个字段会导致 asdict 函数在通过使用 dict_factory 省略该字段之前引发异常。

其他人可以建议一种干净的方法来做到这一点吗?添加到数据类模块中不是一个有用的附加标志吗?

python python-3.x python-dataclasses

10
推荐指数
1
解决办法
5583
查看次数

python ABC & 多重继承

我想知道是否可以在 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)

这也不会失败。我怎样才能要求“孩子”来实现“你好”?

python multiple-inheritance abc

9
推荐指数
1
解决办法
285
查看次数