如何将类实例添加到数据类表示法中的类变量?
我想将所有类实例添加到类变量
我想做这个:
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)
如果有更好的方法来做到这一点,请告诉我。