不同类中的类的实例是不是可以继承其变量
Posted
技术标签:
【中文标题】不同类中的类的实例是不是可以继承其变量【英文标题】:Is it possible for an instance of a class within a different class to inherit its variables不同类中的类的实例是否可以继承其变量 【发布时间】:2020-11-14 15:53:05 【问题描述】:我有 2 个课程,一个进行计算 calc
,另一个设置并运行 setuprun
计算。
我在setuprun
中有多个calc
类实例,可以为每个tab
一次性运行多个计算。 method from here
目前它们是单独的类,但我想从setuprun
继承变量到calc
,特别是excelbook
和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)
【问题讨论】:
【参考方案1】:在我写这篇文章的时候,我的感觉不是...... 不要小看 Python ;)
您的代码有些奇怪,我不明白:您正在使用字符串 'xlsx' 的长度来实例化 calc 类。它只是打印
xlsx 100 x
xlsx 100 l
xlsx 100 s
xlsx 100 x
这对我来说很好,但在你的最终申请中可能不正确。
实例化类setuprun
后,它每次实例化4 个类calc()
,excelbook
和cases
的值相同。这两个变量是类setuprun
的实例变量。
你能做的就是把它们变成class变量。之后,您可以直接引用它们,因此您不需要使用公共变量实例化类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)
我不太确定这是否是您要查找的内容,但我希望它能回答您的问题。
【讨论】:
谢谢!这就是我试图做的,与 super().__init__() 纠缠不清。没有意识到您可以直接从另一个类调用变量。奇怪的是只是在代码中复制了一个函数,但并没有真正改变任何东西。 我能理解,一旦你在某个方向寻找答案,有时很难看到其他可能性。很高兴它有帮助!以上是关于不同类中的类的实例是不是可以继承其变量的主要内容,如果未能解决你的问题,请参考以下文章