如何将类实例添加到数据类表示法中的类变量?

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

我想做这个:

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
    

但我找不到怎么做。

回答

找到答案

在查看了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)

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


以上是如何将类实例添加到数据类表示法中的类变量?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>