我是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?避免它幾乎總是更好。 –