我有以下问题,我需要关于如何在Python中以最佳技术解决它的建议。由于我对编程不熟悉,我想有一些建议。在
所以我将有下面的对象,他们应该存储一些东西。下面是一个例子:
目标1:现金股利(它们将具有以下性质)
对象2:stocksplits(它们将具有以下特性)
我试过这样解决它:
class cashDividends(object):
def __init__(self, _gross,_net,_ISIN, _paydate, _exdate, _recorddate, _frequency, _type, _announceddate, _currency):
self.gross = _gross
self.net = _net
self.ISIN = _ISIN
self.paydate = _paydate
self.exdate = _exdate
self.recorddate = _recorddate
self.frequency = _frequency
self.type = _type
self.announceddate = _announceddate
self.currency = _currency
所以如果我有这个,我将不得不创建另一个名为stockplits
的类,然后再次定义一个__init__
函数。在
然而,有没有一种方法可以让我有一个类,比如“公司行动”,然后在那里进行股票分割和cashdividends
?在
严格地说,这个答案不是最后一个问题的答案。然而,这是一种让你的生活稍微轻松一点的方法。在
考虑创建一种模板类(我使用的是松散的术语;在Python中没有这样的东西),它可以让
__init__
为您工作。像这样:此类将提供的每个关键字参数用作对象属性。使用方法如下:
^{pr2}$使用这样的方法,您不必遍历参数列表并分配每个对象属性;这是自动发生的。在
我们将通过
super()
对父类的方法调用来预订在__init__
方法中需要完成的所有工作。我们这样做是因为locals()
返回一个dict
函数当前名称空间中的每个变量,因此您需要1.)在任何其他工作污染它之前捕获该名称空间;2.)更新名称空间,以防任何工作更改参数值。在对
update
的调用是可选的,但是如果在调用super().__init__()
之后对它们执行了某些操作,则不会更新所提供参数的值(也就是说,除非使用setattr(self, 'argname
,value)`更改值,这不是一个坏主意)。在您可以这样继续使用该类:
如其他答案所述,您可以为我们的其他类创建一个容器,但您甚至可以使用相同的模板类来创建容器:
如果我正确地理解了你想要的是一个对象,这个对象包含你创建的类中的其他对象作为属性?在
当然可以!在python中,可以将类传递给其他类。 这里有一个简单的例子:
相关问题 更多 >
编程相关推荐