我的情况如下
class MyViewStorage(Object):
# methods
class MyView1(FormView):
# methods
class MyView2(FormView):
# methods
MyViewStorage
提供了一些处理MyView1
和MyView2
存储的方法。这些方法需要在MyView1
和MyView2
中创建实例属性。
我现在有两种方法可以使用这个类。
在其他两个类中继承MyViewStorage
为MyView1(FormView, MyViewStorage)
。然后通过简单地使用在其他两个类中创建的实例属性来处理方法。
通过首先在MyViewStorage
和MyView1
类中创建初始实例参数来创建MyView2
的实例
如下图所示
def __init__(self, obj, user, form):
self.obj = obj
self.user = user
self.form = form
哪一个是首选方法?
答案 0 :(得分:1)
这取决于您现在和将来对MyViewStorage使用什么样的用法。
一个。如果您知道 MyViewStorage将仅用于 MyView1和MyView2等视图中,而不会用于其他任何地方。然后,在MyViewStorage本身和从中继承,传输存储在与存储相关的MyView1和MyView2中的所有公共代码非常有意义。
PS:您必须知道Python中的多重继承是如何工作的,它在父类中从左到右优先处理属性(即,如果左侧大多数类具有必需属性,则选择它)
B中。如果您认为 MyViewStorage类应该是通用类或可以具有许多额外功能,可以在任何地方使用,并且可以不时更改来制作它更通用,然后创建一个实例并使用它是非常有意义的(因为你不希望你的视图中的不需要的属性对你没用)
希望这有帮助