2017-08-15 18 views
2

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

试想一下,例如,如果我创建一个类,如下所示:

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) 
+0

将'Aktie'重命名为'Stock'。坚持一种语言(英语)。 –

回答

1

你可以指定你想要的值这样

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

好吧,让我们说我有很多对象保存在名为“股票”的列表中。我如何将它分配给第一个对象?它会自动执行吗? – Jurkka

+0

是'股票[0] .solidity = solidity'你在找什么? –

+0

您的评论帮助了很多,谢谢! – Jurkka

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) 
+0

好吧,这看起来很有希望谢谢你! :)事情只是我希望代码为未定义数量的对象工作。所以现在代码从txt文件读取数据并将它们保存到列表中的对象。所以现在我不知道如何用不同的信息来更新这个列表中的每个对象,而不需要手动指定像“s”这样的变量。你知道如何解决这个问题吗? – Jurkka

+0

变量's'只是一个不好的例子,它可以处理任何对象的引用,比如'list_of_stocks [0] .update(p_e = 3)',或者在for循环中使用obejcts:'item在list_of_stocks:item.update(p_e = 3)' – PRMoureu