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

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -