我是python/Django的新手。请帮我解决这个问题。 我想实例化这些类属性,但我无法做到这一点。以字典形式访问类属性python django
这是我的课
class PricingContext(object):
def __init__(self, order=None, availability=False):
self.order = order
self.availability = availability
@property
def available_suites(self):
if self.availability:
availability = calculate_available_suites(self.order)
return availability
@property
def price_codes(self):
return self.order.get('price_codes')
@property
def purchased_date(self):
return self.order.order_items[0].get('purchased_date')
@property
def suite_type(self):
return self.order.order_items[0]['item_name']
,我试图实例化这样
context_obj = PricingContext(context, availability)
eval(self.discount_function, None, context_obj)
假设self.discount = "'PRICE_CODE' in context_obj.price_codes"
但在这里,它抛出这个错误。 类型错误:当地人必须是一个映射
如果我试图通过context_obj .__ dict__那么仅实例 self.order和self.availability因为它们在初始化提到
我希望所有这些属性都可以在不初始化的情况下实例化,因为它不会与我的用例一起使用。 我只想在eval()需要时调用每个属性。
让我知道是否有可能或有办法做到这一点。 在此先感谢您的帮助。我将不胜感激任何帮助。
这听起来不是一个好主意。为什么你需要将折扣函数存储为字符串? –
@DanielRoseman eval以字符串的形式占用第一个参数。所以,这里的discount_function是一个基于第三个参数传递的字典进行评估的规则。 – Shagun
这不是我的意思。你为什么要使用eval?避免它几乎总是更好。 –