0

我有两门课,一门进行计算calc,另一门设置并运行setuprun计算。

我有calc该类的多个实例,setuprun可以一次运行多个计算tab从这里开始的方法

目前它们是单独的类,但我想从 to 继承变量setupruncalc特别是excelbookand cases,以删除一些重复的代码。我尝试了各种父母,孩子和超级的组合,但没有运气。

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

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

下面的代码:

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)
4

1 回答 1

1

在我写这篇文章时,我的感觉不是...... 不要低估 Python ;)

我不明白您的代码有些奇怪:您正在使用字符串“xlsx”的长度来实例化 calc 类。它只是打印

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

不过这对我来说很好,但在您的最终申请中可能不正确。

实例化类后,它每次setuprun实例化 4x 类,并且 和的值相同。这两个变量是类的实例变量。calc()excelbookcasessetuprun

你能做的就是把它们变成变量。之后,您可以直接引用它们,因此,您不需要calc使用公共变量实例化类。

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

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)

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

于 2020-07-24T19:17:24.203 回答