包含自引用数组的Python类

时间:2019-01-27 06:31:32

标签: python python-3.x

我有一个像这样的课程...

class person:
    def __init__(self, name):
        self.name = name
        self.carData = ""        
        self.HouseData = ""
        #other assets 

我正在像这样遍历它...

john = person('John');
for index, row in john.carData.iterrows():
    #do something

for index, row in john.HouseData.iterrows():
    #do something

但是在这种情况下,“做某事”是重复的代码-我想对carData,HouseData和一个人可以拥有的所有其他资产做同样的事情。

以非重复方式遍历这些内容的最佳方法是什么?我在类定义中考虑了这样的事情,但是我很确定它至少不优雅,而且可能是错误的...

class person:
    def __init__(self, name):
        self.name = name
        self.carData = ""        
        self.HouseData = ""
        #other assets 
        self.assets = [self.carData, self.HouseData etc]

john = person('John');

for asset in john.assets:
    for index, row in asset.iterrows():
        #do something

定义对象列表(在本例中为self.assets)本身是引用存储在类中的相同对象的一种不好做法吗?抱歉,如果您含糊不清-我只是想找出最干净的方法来应对这种情况。

1 个答案:

答案 0 :(得分:1)

如果计划将相同的代码应用于对象的每个属性,则可以尝试 df['freq'] = df.groupby('category')['category'].transform('count') df = df.drop_duplicates()

john.__dict__

请参见this question

这是一种小技巧,但是如果(例如)您要将代码应用于除“名称”之外的每个属性,请执行以下操作:

john = person('John')
for attr, value in john.__dict__.items():
    # e.g. attr == 'carData'
    for index, row in value.iterrows():
        # do something