python - 如何以数据类表示法将类实例添加到类变量中?
问题描述
我想将所有类实例添加到类变量中
我想做这个:
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)
如果有更好的方法来做到这一点,请告诉我。
推荐阅读
- django - Django Telegram bot 在 Heroku 上没有响应
- serilog - 为什么 Serilog 登录 Main() 而不是 Form1
- sql - 如何在 SQL 中比较两个相似表的行?
- python - 无法卸载 pip 包
- python - Spyder有放大镜吗?
- c# - 直接在表中插入行时出现 EF6 错误
- blazor - Blazor JS 互操作 getElementById 以获取组件引用
- flutter - WillPopScope 不适用于其他小部件
- python - 熊猫与多列相比,不包括索引
- python - 获取某个范围内某些列和 VAF/值的重复数据框