Python 迭代给定父类中子类的某些方法

Python 迭代给定父类中子类的某些方法,python,class,parent-child,Python,Class,Parent Child,我构建了两个名为zero_息票债券和息票债券的类,这两个类都有一个名为Create_random_asset的方法,该方法为这两个产品生成随机数据属性(概念、开始日期、结束日期、风险日期等),并在一个数据框中返回该数据(有n行)。现在我想写一个叫做 product_collection,它继承两个类并在两个子类上迭代(将会有更多的产品,这就是为什么我想用迭代来做),并使用create_random_asset方法为每个子类返回这些数据帧。代码: class zero_coupon_bond():

我构建了两个名为zero_息票债券和息票债券的类,这两个类都有一个名为Create_random_asset的方法,该方法为这两个产品生成随机数据属性(概念、开始日期、结束日期、风险日期等),并在一个数据框中返回该数据(有n行)。现在我想写一个叫做 product_collection,它继承两个类并在两个子类上迭代(将会有更多的产品,这就是为什么我想用迭代来做),并使用create_random_asset方法为每个子类返回这些数据帧。代码:

class zero_coupon_bond():

    def __init__(self):
        ..........


    def create_random_asset(self,n):
        .....
        return pd.DataFrame(OrderedDict(self.columns))

class coupon_bond():

    def __init__(self):
        ..........

    def create_random_asset(self,n):
        .....
        return pd.DataFrame(OrderedDict(self.columns))
那么我要找的是:

class product_collection(zero_coupon_bond,coupon_bond):

    def __init__(self,n,k):
        self.n=n
        self.k=k
        self.df="empty dateframe"


    def random_data(self,n,amount_products):

               for product in childclass:
                    df.append(childclass.create_random_asset(n))

有人知道我该如何正确地实施吗?提前感谢。

根据您在问题中提供的内容,您的
产品集合
类不应继承优惠券类(也不应是优惠券类的祖先)。相反,它应该尽可能地与息票债券类分离。也就是说,它应该能够识别并迭代实现方法
create\u random\u asset
的任何对象

product\u collection
类可以管理内部集合(可能是
列表
),其元素类型为
息票债券

然后您的
random_data
方法可以实现如下:

class product_collection():
    def __init__(self):
        self.products = []

    # ...

    def random_data(self):
        df = # empty dataframe
        for p in self.products:
            df.append(p.create_random_asset())
        return df
要将不同的产品添加到产品集合中,您可以在
product\u collection
中实现一个
add\u product
方法,该方法仅将一个
息票债券
实例附加到产品的内部列表中

def add_prodct(self, product):
    assert product
    self.products.append(product)

听起来继承在这里不是一个好的选择。您需要两个类的实例您知道如何有效地收集两个产品的数据并将它们连接到一个数据帧中吗?在这种情况下,我得到一个错误,即“产品集合”没有创建数据帧所需的属性,例如,在“创建随机资产”中,一行是位置的ID,因此我得到:create_random_asset ID=self.ID(n)AttributeError:“product_collection”对象没有属性“ID”。我现在使用了您的方法,但也继承了子债券类,因为它们是另一个子类“固定收益产品”的父类,从中我需要一些方法以及数据帧,现在它的工作..谢谢!