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