多个父方法调用的 Pythonic 方法
Pythonic Approach to Multiple Parent Method Calls
假设我有以下 class 结构:
class Mixin1(Base1):
def get_data(self):
# Gather some data in some way
class Mixin2(Base2):
def get_data(self):
# Gather some data in another way
class MyClass(Mixin1, Mixin2):
def get_data(self):
# Gather some data in yet another way. Then...
# Get Mixin2's version of get_data. Then...
# Get Mixin1's version of get_data.
提供一些上下文的示例是 Mixin1
是身份验证处理程序,Mixin2
是登录处理程序。父 classes 中的功能将填充实例变量(例如,错误消息)。
调用父项的 get_data
方法的最 Pythonic 方法是什么?
获取此类信息的一种方法可能是这样的:
original_class = self.__class__.__base__
parents = [base for base in original_class.__bases__]
for parent in parents:
parent.get_data()
我不认为这是一种不合理的方法,但如果我必须开始深入元数据,我开始怀疑是否有更 Pythonic 的方法。
有什么建议吗?是否可以为此使用 super()
?
class MyClass(Mixin1, Mixin2):
def get_data(self):
# do local stuff
data2 = Mixin2.get_data(self)
data1 = Mixin1.get_data(self)
另外,this post好像也有关系。
另一种方法是使用包含而不是继承。
假设我有以下 class 结构:
class Mixin1(Base1):
def get_data(self):
# Gather some data in some way
class Mixin2(Base2):
def get_data(self):
# Gather some data in another way
class MyClass(Mixin1, Mixin2):
def get_data(self):
# Gather some data in yet another way. Then...
# Get Mixin2's version of get_data. Then...
# Get Mixin1's version of get_data.
提供一些上下文的示例是 Mixin1
是身份验证处理程序,Mixin2
是登录处理程序。父 classes 中的功能将填充实例变量(例如,错误消息)。
调用父项的 get_data
方法的最 Pythonic 方法是什么?
获取此类信息的一种方法可能是这样的:
original_class = self.__class__.__base__
parents = [base for base in original_class.__bases__]
for parent in parents:
parent.get_data()
我不认为这是一种不合理的方法,但如果我必须开始深入元数据,我开始怀疑是否有更 Pythonic 的方法。
有什么建议吗?是否可以为此使用 super()
?
class MyClass(Mixin1, Mixin2):
def get_data(self):
# do local stuff
data2 = Mixin2.get_data(self)
data1 = Mixin1.get_data(self)
另外,this post好像也有关系。
另一种方法是使用包含而不是继承。