python 2.7 - Passing constructor parameter to a function that generates default value fails -
i new python assume doing terribly wrong, don't see , google has not helped far too. wrong ?
def lookup_permille(name): # todo: implement permille lookup table return 0 def lookup_known_product(name): # todo: implement known product lookup table return 0 class productentry: def __init__(self, source, name, price, volume, permille = lookup_permille(name), known_product_id = lookup_known_product(name), category = 0): self.source = source self.name = name self.price = price self.volume = volume self.permille = permille self.price_per_permille = self.permille / self.price; self.category = category self.known_product_id = known_product_id calling constructor of productentry fails with:
def __init__(self, source, name, price, volume, permille = lookup_permille(name), known_product_id = lookup_known_product(name), category = 0): nameerror: name 'name' not defined
the expressions defining default arguments evaluated when function defined, not when called. @ point when __init__ being defined, name not exist, cannot used in expression calculate default argument.
the usual way have stand-in value default argument, , replace whatever value want inside body of function.
def __init__(self, source, name, price, volume, permille=none, known_product_id=none, category=0): if permille none: permille = lookup_permille(name) if known_product_id none: known_product_id = lookup_known_product(name) ...
Comments
Post a Comment