将函数传递给数据类的 __post_init__ 方法
Pass a function into the __post_init__ method of dataclasses
我有一个数据class,我想在初始化 class 时设置一个值。
@dataclass
class classA:
__data: DataFrame
__Limit: float
__totalLimit: float = field(init=False)
def __post_init__(self):
# This Does not work
__setTotalLimit()
# This works when i put the logic in.
# self.__totalLimit = self.__data['Amount'].sum()
def __setTotalLimit(self):
self.__totalLimit = self.__data['Amount'].sum()
这是我收到的错误:
NameError:名称“_classA__setTotalLimit”未定义
基本上一旦数据传入,我就需要汇总一列并将其设置为变量,因为它将在整个脚本中使用。
这样使用:
def __post_init__(self):
self.__setTotalLimit()
如果该字段实际上不需要来自实例的数据,则根本不要使用 __post_init__
,而是在添加字段本身时使用 default_factory
选项,提供零参数可调用。
请注意,__name_mangle
每个数据类字段都这样很奇怪。您可能应该只使用普通属性。
您忘记使用self
引用方法:
def __post_init__(self):
self.__setTotalLimit()
我有一个数据class,我想在初始化 class 时设置一个值。
@dataclass
class classA:
__data: DataFrame
__Limit: float
__totalLimit: float = field(init=False)
def __post_init__(self):
# This Does not work
__setTotalLimit()
# This works when i put the logic in.
# self.__totalLimit = self.__data['Amount'].sum()
def __setTotalLimit(self):
self.__totalLimit = self.__data['Amount'].sum()
这是我收到的错误: NameError:名称“_classA__setTotalLimit”未定义
基本上一旦数据传入,我就需要汇总一列并将其设置为变量,因为它将在整个脚本中使用。
这样使用:
def __post_init__(self):
self.__setTotalLimit()
如果该字段实际上不需要来自实例的数据,则根本不要使用 __post_init__
,而是在添加字段本身时使用 default_factory
选项,提供零参数可调用。
请注意,__name_mangle
每个数据类字段都这样很奇怪。您可能应该只使用普通属性。
您忘记使用self
引用方法:
def __post_init__(self):
self.__setTotalLimit()