私はPython/Djangoの初心者です。この問題で私を助けてください。 これらのクラスプロパティをインスタンス化しようとしていますが、できません。dictの形式のアクセスクラスのプロパティ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"
を想定しかし、それは、このエラーがスローされます。 例外TypeError:私はcontext_obj .__ dict__にを渡すしようとした場合、それらはのinit
に記載されているので、地元の人々がマッピング
にする必要があり、それが唯一の self.orderとself.availabilityをインスタンス化initで初期化せずに、これらのプロパティをすべてインスタンス化することを、私のユースケースと一緒には行かないようにしたい。 eval()が必要とする場合にのみ、それぞれのプロパティを呼び出す必要があります。
可能かどうかを教えてください。 ありがとうございました。助けていただければ幸いです。
これは良い考えではありません。なぜ割引機能を文字列として保存する必要がありますか? –
@DanielRoseman evalは最初のパラメータを文字列の形で取ります。したがって、ここでdiscount_functionは、3番目のパラメータに渡されたdictに基づいて評価されるルールです。 – Shagun
それは私が意味するものではありませんでした。なぜあなたはevalをまったく使いたいのですか?ほとんどの場合、それを避ける方が良いです。 –