不同 class 中的 class 的实例是否可以继承其变量

Is it possible for an instance of a class within a different class to inherit its variables

我有 2 个 classes,一个计算 calc,另一个设置 运行s setuprun 计算。

我在 setuprun 中有 calc class 的多个实例,每个 tab 一次计算 运行 多个实例。 method from here

目前它们是分开的 classes 但我想继承从 setupruncalc 的变量,特别是 excelbookcases , 删除一些重复的代码。我尝试了各种父子组合,但都没有成功。

我想我的问题是;不同 class 中的 class 的实例是否有可能继承其变量 - 在我写这篇文章时,我的感觉不是...

任何指点将不胜感激。谢谢。

代码如下:

class calc():

    def __init__(self, excelbook, tab, cases):
        self.excelbook = excelbook
        self.cases = cases
        self.tab = tab

    def run(self):
        print(self.excelbook, self.cases, self.tab)


class setuprun():

    def __init__(self, excelbook, cases):
        self.excelbook = excelbook
        self.gettabs()
        runs = [calc(excelbook, t, cases) for t in self.tabs]
        for run in range(len(runs)):
            runs[run].run()
        self.check = runs

    def gettabs(self):
        self.tabs = list(self.excelbook)

可以 运行 与:

a = setuprun('xlsx', 100)

写到这里,我的心情不是... 不要小看Python ;)

您的代码有些奇怪,我不明白:您正在使用字符串 'xlsx' 的长度来实例化计算 classes。它只是打印

xlsx 100 x
xlsx 100 l
xlsx 100 s
xlsx 100 x

虽然我没意见,但在您的最终申请中可能不正确。

实例化 class setuprun 后,它每次实例化 4x 个 class calc()excelbook 和 [=15] 的值相同=].这两个变量是classsetuprun.

的实例变量

你能做的就是把它们变成class变量。之后就可以直接引用它们了,这样就不需要用普通变量实例化class calc

因为对 classes 使用大写名称是一种很好的做法(以将它们与实例变量区分开来),所以我在下面的改编代码中这样做:

class Calc():

    def __init__(self, tab):
        self.excelbook = Setuprun.excelbook
        self.cases = Setuprun.cases
        self.tab = tab

    def run(self):
        print(self.excelbook, self.cases, self.tab)

class Setuprun():

    def __init__(self, excelbook, cases):
        Setuprun.excelbook = excelbook
        Setuprun.cases = cases
        self.gettabs()
        runs = [Calc(t) for t in self.tabs]
        for run in range(len(runs)):
            runs[run].run()
        self.check = runs

    def gettabs(self):
        self.tabs = list(self.excelbook)
        
a = Setuprun('xlsx', 100)

我不太确定这是否是您要找的,但我希望它能回答您的问题。