使用@dataclass

问题描述

我刚刚开始使用@dataclass装饰器。这是我没有数据类的实现

class Myclass:

    def __init__(self,path: str = None,company_name: List = None):

        self.path = path
        self.company_name = company_name

        if path is not None:
            with open(self.path,'r') as f:
                self.data = yaml.load(f,Loader=yaml.FullLoader)
        else:
            self.data = {'company': self.company_name}

所以在这里,我正在分配实例属性。

c = Myclass(path = '/home/akash/project/stock-analysis/data/sample_company.yaml')
c.data
>>>{'company': ['ADANIGREEN','HDFCAMC','WHIRLPOOL','APLAPOLLO','LALPATHLAB']}

我管理的@dataclass等效项是

@dataclass
class Myclass:
    path: str=None
    company_name: List=None
        
    def __post_init__(self):
        if self.path is not None:
            with open(self.path,Loader=yaml.FullLoader)
        else:
            self.data = {'company': self.company_name}

它提供完全相同的输出(预期)

c = Myclass(path = '/home/akash/project/stock-analysis/data/sample_company.yaml')
c.data
>>>{'company': ['ADANIGREEN','LALPATHLAB']}

所以,我做对了吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)