将多个属性从一个 class 调用到另一个 - Python
Call multiple attributes from one class into another - Python
我正在与多个 class 共享一些初始共同点 variables/attributes。为了使其成为 cleaner 并避免多次调用相同的变量我想将它们全部设置为初始 class (例如 classA
)然后加载所有classB
.
中的此属性
所以我会定义:
class classA:
def __init__(self, varA, varB, varC, ..., varZ):
self.varA = varA
self.varB = varB
self.varC = varC
(...)
self.varZ = varZ
然后在一秒钟内加载它classB
class classB:
def __init__(self, classA):
self.varA = classA.varA
self.varB = classA.varB
self.varC = classA.varC
(...)
self.varZ = classA.varZ
有没有更好的方法来实现这一点,而无需遍历所有单个属性?
您可以使用 argument unpacking 和继承:
class A:
def __init__(self, *args, **kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
class B(A):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
data = {'varA': 'a', 'varB': 'b', 'varC': 'c'}
a = A(**data)
b = B(**data)
print(a.varB == b.varB)
输出:
True
我正在与多个 class 共享一些初始共同点 variables/attributes。为了使其成为 cleaner 并避免多次调用相同的变量我想将它们全部设置为初始 class (例如 classA
)然后加载所有classB
.
所以我会定义:
class classA:
def __init__(self, varA, varB, varC, ..., varZ):
self.varA = varA
self.varB = varB
self.varC = varC
(...)
self.varZ = varZ
然后在一秒钟内加载它classB
class classB:
def __init__(self, classA):
self.varA = classA.varA
self.varB = classA.varB
self.varC = classA.varC
(...)
self.varZ = classA.varZ
有没有更好的方法来实现这一点,而无需遍历所有单个属性?
您可以使用 argument unpacking 和继承:
class A:
def __init__(self, *args, **kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
class B(A):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
data = {'varA': 'a', 'varB': 'b', 'varC': 'c'}
a = A(**data)
b = B(**data)
print(a.varB == b.varB)
输出:
True