首页 > 解决方案 > 如何以数据类表示法将类实例添加到类变量中?

问题描述

我想将所有类实例添加到类变量中

我想做这个:

class Circle:
    all_circles = []
    def __init__(self, rad):
        self.rad = rad
        self.__class__.all_circles.append(self)

因此,每当我创建一个新的圆实例时,它就会被添加到all_circle类变量中。

如何在dataclass符号中做到这一点?

我想复制顶部的代码,@dataclass但我无法在任何地方找到如何执行此操作,因为我无法访问 self.

就像是:

from dataclasses import dataclass
from typing import ClassVar


@dataclass
class Circle:
    rad: int = 1
    all_circles = ClassVar[list] = [] # after this I don't know how to get the self because it is not available
    

但我找不到怎么做。

标签: pythonpython-dataclasses

解决方案


找到了答案

在查看了其他示例后,我找到了解决方案dataclass!您可以使用该__post_init__功能来实现相同的结果!

from dataclasses import dataclass
from typing import ClassVar

@dataclass
class Circle:
    rad: int = 1
    all_circles = ClassVar[list["Circle"]] = []

    def __post_init__(self: "Circle") -> None:
        Circle.all_circles.append(self)

如果有更好的方法来做到这一点,请告诉我。


推荐阅读