我正在创建一个程序,它从不同的文本文件中读取数据并将信息保存到对象中。从一个文本文件的信息创建对象没有问题。
想象一下,例如,如果我创建一个类似于以下内容的类:
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 :(得分: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)