次のクラスを検討してください。
from global_vars import Vars
from aud_lib import lib_class
from aud_lib2 import lib_class2
class test(lib_class, lib_class2):
def __init__(self):
self.Variables = Vars
self.step()
self.main_fun()
def step(self):
print("Before Lib1 Call - main")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
self.lib_func()
print("After Lib1 Call - main")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
self.lib_func2()
print("After Lib2 Call - main")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
def main_fun(self):
print("After Libs Call")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
global_vars.py には以下が含まれます。
class Vars:
glo_path = 'my_path'
glo_var = 1
aud_lib.py には以下が含まれます。
class lib_class(object):
def __init__(self):
self.Variables = object.Variables
def lib_func(self):
print("Inside Lib1 Call [Before Modification]")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
self.Variables.glo_path = 'My lib1 Path'
self.Variables.glo_var = 3
print("Inside Lib1 Call [After Modification]")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
aud_lib2.py には以下が含まれます。
class lib_class2(object):
def __init__(self):
self.Variables = object.Variables
def lib_func2(self):
print("Inside Lib2 Call [Before Modification]")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
self.Variables.glo_path = 'My lib2 Path'
self.Variables.glo_var = 5
print("Inside Lib2 Call [After Modification]")
print("Path: " + self.Variables.glo_path)
print("Var: " + str(self.Variables.glo_var))
を呼び出すtest()と、次の出力が生成されます (予想)。
Before Lib1 Call - main
Path: my_path
Var: 1
Inside Lib1 Call [Before Modification]
Path: my_path
Var: 1
Inside Lib1 Call [After Modification]
Path: My lib1 Path
Var: 3
After Lib1 Call - main
Path: My lib1 Path
Var: 3
Inside Lib2 Call [Before Modification]
Path: My lib1 Path
Var: 3
Inside Lib2 Call [After Modification]
Path: My lib2 Path
Var: 5
After Lib2 Call - main
Path: My lib2 Path
Var: 5
After Libs Call
Path: My lib2 Path
Var: 5
Process finished with exit code 0
コードは期待どおりに動作し、 class の変数の値を変更できますが、なぜそれが機能するのか、特にlib クラスでのの使用がVarsわかりません。object.Variables
また、元のtestクラスが拡張されていないlib_classと機能しないことに気付きましたlib_class2。
私は何が欠けていますか?