Python 在不带“self”的~factory子类中调用factory\u boy超类方法`
有没有办法从子类调用父工厂的方法 通常的Python 在不带“self”的~factory子类中调用factory\u boy超类方法`,python,inheritance,factory-boy,Python,Inheritance,Factory Boy,有没有办法从子类调用父工厂的方法 通常的super(ThisClass,self)或ParentClass.method(self)方法不起作用,因为self不是类的实例,而是工厂返回的对象 class SomethingFactory(factory.DjangoModelFactory): # Meta, fields, etc @factory.post_generation def post(self, create, extracted, **kwargs):
super(ThisClass,self)
或ParentClass.method(self)
方法不起作用,因为self
不是类的实例,而是工厂返回的对象
class SomethingFactory(factory.DjangoModelFactory):
# Meta, fields, etc
@factory.post_generation
def post(self, create, extracted, **kwargs):
# Some steps
class SomethingElseFactory(SomethingFactory):
@factory.post_generation
def post(self, create, extracted, **kwargs):
super(SomethingElseFactory, self).post(create, extracted, **kwargs)
错误为TypeError:super(type,obj):obj必须是类型
的实例或子类型
(快捷方式super().post(创建、提取、kwargs)
会生成相同的错误。)
如何从子类访问父工厂
SomethingFactory.post
方法?根据您在基类post()
中尝试执行的操作,您可以将其拉出到函数中并从两个位置调用它吗:
def set_attributes(obj):
obj.attr1 = True
obj.attr2 = 1000
class SomethingFactory(factory.DjangoModelFactory):
# Meta, fields, etc
@factory.post_generation
def post(self, create, extracted, **kwargs):
set_attributes(self)
class SomethingElseFactory(SomethingFactory):
@factory.post_generation
def post(self, create, extracted, **kwargs):
set_attributes(self)
# Do some other stuff