使用python回顾添加对象属性

时间:2017-08-15 09:02:50

标签: python python-3.x object updates

我正在创建一个程序,它从不同的文本文件中读取数据并将信息保存到对象中。从一个文本文件的信息创建对象没有问题。

想象一下,例如,如果我创建一个类似于以下内容的类:

class Stock:
    def __init__(self, company_name, solidity, share_price, p_e, p_s, beta_value, max_value, min_value):
        self.company_name = company_name
        self.solidity = solidity
        self.share_price = share_price
        self.p_e = p_e
        self.p_s = p_s
        self.beta_value = beta_value
        self.max_value = max_value
        self.min_value = min_value

我创建了一个只有一半属性的对象:

stock = Stock(company_name, 0, share_price, 0, 0, beta_value, 0, 0)

我如何在以后向同一个对象添加更多信息,即使我有很多对象,例如:

stock = Stock(0, solidity, 0, p_e, p_s, 0, max_value, min_value)

2 个答案:

答案 0 :(得分:1)

您可以像这样分配所需的值

stock.solidity = solidity
stock.p_e = p_e
stock.p_s = p_s
stock.max_value = max_value
stock.min_value = min_value

答案 1 :(得分:1)

您不想在第一个之后致电Stock(0, solidity, 0, p_e, p_s, 0, max_value, min_value),这将创建您班级的另一个实例。

您需要在类中实现一个允许更新稍后给出的属性的方法。

另一个提示,当你有很多参数时,你应该使用命名参数来简化它。它还允许定义默认参数,并避免每次都给出所有参数:

class Stock():
    def __init__(self, company_name='', solidity=0, 
                 share_price=0, p_e=0, p_s=0, 
                 beta_value=0, max_value=0, min_value=0):
        self.company_name = company_name
        self.solidity = solidity
        self.share_price = share_price
        self.p_e = p_e
        self.p_s = p_s
        self.beta_value = beta_value
        self.max_value = max_value
        self.min_value = min_value

    def update(self, **kwargs):
        for key in kwargs:
            setattr(self, key, kwargs[key])

s = Stock(solidity=10,
          share_price=120
          )

s.update(beta_value=12)