2017-09-27 2 views
1
customer = CustomerProfile.objects.get(pk=4) 
ipdb> SimilarCustomerFinder(self, customer=customer, fields=self.fields) 
*** TypeError: __init__() got multiple values for keyword argument 'customer' 

In SimilarCustomerFinder Klasse, ich habeTypeerror: __init __() bekam mehrere Werte für die Keyword-Argument 'customer'

def __init__(self, customer, fields): 
    self._matches = {} 
    props = self.__class__.__dict__.keys() 
    self.customer = customer 
    self.fields = fields 
    self.checks = [k for k in props if k.startswith('check_')] 
    if customer: 
     self.user_id = customer.user.pk 
    else: 
     self.user_id = -1 

    for check in self.checks: 
     c = check.replace('+', '_') 
     getattr(self, c)() 

ich mit diesem Fehler habe Schwierigkeiten. Wie könnte ich es reparieren? Wenn ich customer=customer entferne, habe ich *** AttributeError: 'CustomerUpdateForm' object has no attribute 'user', warum?

+3

Dieser Code macht keinen Sinn. Was ist "selbst" in diesem ersten Ausschnitt? –

Antwort

3

den ipdb Ausgang Da es scheint, wie Sie eine Instanz zu schaffen mit diesem Befehl sind versuchen:

SimilarCustomerFinder(self, customer=customer, fields=self.fields) 

jedoch self ist ein implizit übergebene Argument, so dass Sie es nicht in explizit passieren sollten. Wie folgt aus:

SimilarCustomerFinder(customer=customer, fields=self.fields) 

Oder wenn Sie wirklich beabsichtigt es in explizit zu passieren (was wirklich seltsam wäre, und wahrscheinlich nicht tun, was Sie beabsichtigen, - aber wer weiß ...) können Sie die Methode aufrufen müssen explizit in der Klasse:

SimilarCustomerFinder.__init__(self, customer=customer, fields=self.fields) 
Verwandte Themen