python - 在〜Factory子类中调用factory_boy父类(super class)方法,不带 `self`

标签 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):
        # 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 必须是 type 的实例或子类型

(快捷方式 super().post(create, extract, 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

关于python - 在〜Factory子类中调用factory_boy父类(super class)方法,不带 `self`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306001/

相关文章:

python - 查找自增字段的值

python - 使用 BeautifulSoup 拆分 HTML 文档

python - 正则表达式结果为无

c++11可变参数模板方法完全影子基类方法?

django - Factory-boy 为工厂创建子工厂列表

python - 带有 SubFactory 字段的 DjangoModelFactory 不创建新条目而是指向现有条目

python - 将 Factory Boy 与 GeoDjango PointFields 一起使用

python - 文本冒险游戏 bool 变量对我不起作用

sql - 有关继承和外键引用的数据库设计查询

c++ - 继承和隐藏 parent 的属性