2015-11-30 2 views
1

Есть ли способ в python установить значение по умолчанию параметра в свойство другого параметра?Использовать атрибут параметра в качестве значения по умолчанию для другого параметра?

например

Я в настоящее время имею функцию в Джанго, который я хотел бы сделать

def supplier_default_product(region, supplier=region.default_supplier.id): 
    default_product_instance = Product.objects.get(name=default_product, supplier=supplier) 
    .... 

так, что я могу назвать это либо нет поставщика, где он просто использует поставщик в регионах по умолчанию:

supplier_default_product(region) 

или с определенным поставщиком:

supplier_default_product(region, supplier) 

ответ

2

Использовать None в качестве аргумента по умолчанию, а затем проверить тело функции для None.

def supplier_default_product(region, supplier=None): 
    if supplier is None: 
     supplier = region.default_supplier.id 
    default_product_instance = Product.objects.get(name=default_product, supplier=supplier) 

Вы не можете ссылаться на атрибут другого аргумента, так как значения аргументов по умолчанию устанавливаются во время определения, которое происходит только один раз.

+0

Спасибо за объяснение, почему он не работает. – Yunti

+0

@Yunti проблем нет. Рад, что смог помочь! –