我正在使用一个现有的Django库,我正在创建一个我想要抽象的类。在
假设有问题的类是BaseFoo
。在
目前,这个实现有一个基类BaseFoo
。在
每次创建扩展BaseFoo
的类时,元类都会将其添加到类列表中。它不会通过对类名进行硬编码测试来显式地添加BaseFoo
:
if name not in ('BaseFoo',):
class_list.append(new_cls)
我希望能写一些东西,比如:
^{pr2}$并让元类跳过所有抽象的BaseFoo
对象。所以我想知道Django是如何对模特做同样的事情的,以及是否有一种简单、优雅的方式来实现这一点。在
我已经看过Django用来定义模型的一些代码,但是我可以使用一些指针。另外,如果有一种更简单的方法来做到这一点而不必使用class Meta
,我也很乐意接受。在
请注意,我对这个解决方案并不感到特别兴奋:
class MyBaseFoo(BaseFoo):
abstract = True
class ActualFoo1(MyBaseFoo):
abstract = False
class ActualFoo2(MyBaseFoo):
abstract = False
在具体类中不需要将abstract设置为False—只在抽象类中设置此设置就足够了:
但是,可能已经在类中调用了@decorators,或者已经在类中调用了@decorators,或者已经在类中调用了@decorators。在
相关问题 更多 >
编程相关推荐