gpt4 book ai didi

python - Factory-boy属性属性?

转载 作者:行者123 更新时间:2023-11-28 21:20:55 26 4
gpt4 key购买 nike

我有一个这样的食谱:

import factory
from models import Foobar


class MenuItemFactory(factory.Factory):
class Meta:
model = MenuItem

name = 'Default Foobar'
url = factory.LazyAttribute(lambda o: '/%s' % o.name)

我想添加动态属性,如 slug,但我想在单独的方法中进行。我想要这个,因为在 lambda 单行代码中编写任何更复杂的逻辑都会很丑陋。

我想到了一个想法,使用 property 方法,就像他们在 Django 模型中所做的那样。例如:

class MenuItemFactory(factory.Factory):
...

@property
def url(self):
return '/%s' % self.name

是否有一种类似于此的方法可以完成我正在尝试做的事情?

编辑

我最终想要完成的是:

menu_item = MenuItemFactory(name='foobar')

menu_item.name = 'foobar'
menu_item.url = '/foobar'

其中 slug 充当动态属性。换句话说,我正在寻找一个合适的位置来存储我的动态属性逻辑

最佳答案

您可以使用内置属性 https://docs.python.org/3.6/library/functions.html#property

class Test:
name = 'bar'

def fget(self):
return self.name

def fset(self, name):
self.name = name

Test.slug = property(fget=fget, fset=fset)
t = Test()
print(t.slug) # 'bar'
t.slug = 'foo'
print(t.slug) # 'foo'

关于python - Factory-boy属性属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52042642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com