不同 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 但我想继承从 setuprun
到 calc
的变量,特别是 excelbook
和 cases
, 删除一些重复的代码。我尝试了各种父子组合,但都没有成功。
我想我的问题是;不同 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)
我不太确定这是否是您要找的,但我希望它能回答您的问题。
我有 2 个 classes,一个计算 calc
,另一个设置 运行s setuprun
计算。
我在 setuprun
中有 calc
class 的多个实例,每个 tab
一次计算 运行 多个实例。 method from here
目前它们是分开的 classes 但我想继承从 setuprun
到 calc
的变量,特别是 excelbook
和 cases
, 删除一些重复的代码。我尝试了各种父子组合,但都没有成功。
我想我的问题是;不同 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)
我不太确定这是否是您要找的,但我希望它能回答您的问题。