2016-06-09 11 views
0

Bitte beachten Sie die Beispielcode:Python - Aufruf Funktion innerhalb derselben Klasse

a = [1,2,3,4,5] # main list 

b = [4,5,6] #variable list nr1 
c = [1,2] #variable list nr2 

class union(object): 
    def __init__(self, name): 
     self.name = name 

    def common_numbers(self, variable_list): 
     self.variable_list = variable_list 
     for x in self.name: 
      if x in self.variable_list: 
       yield(x) 

    def odd_numbers(self, odds): 
     self.odds = odds 
     for x in self.variable_list: 
      if not x % 2 == 0: 
       yield x 

''' I receive: builtins.AttributeError: 'union' object has no attribute 'variable_list'.''' 


x = union(a) 
print(list(x.odd_numbers(c))) 

Ich versuche zu verstehen, wie innerhalb derselben Klasse andere Funktion aufzurufen. Wie Sie sehen können, versuche ich, ungerade Zahlen aus der Funktion common_numbers zu finden.

Bitte verstehen Sie, dies ist Beispielarbeit. Ich weiß, dass es viele Lösungen mit oder ohne Klassen gibt, um das Ergebnis zu erhalten. Aber in diesem Fall brauche ich kein Ergebnis, ich würde wirklich appretiate, wenn Sie mir helfen könnten, die rufende andere Funktion innerhalb der Klasse zu verstehen. Entschuldigung für mein Englisch und danke im Voraus.

Antwort

2

Sie erhalten den Fehler, weil Sie nie selbst.variable_list definieren. Es wird nur definiert, wenn Sie common_numbers() aufrufen, aber Sie tun das nie. Sie können es definieren, wenn die Einleitung:

class union(object): 
    def __init__(self, name, variable_list): 
     self.name = name 
     self.variable_list = variable_list 

    def common_numbers(self): 
     for x in self.name: 
      if x in self.variable_list: 
       yield(x) 
x = union(a, b) 
print list(x.odd_numbers(c)) 

oder nach Beginn, aber vor dem Aufruf odd_numbers:

class union(object): 
    def __init__(self, name): 
     self.name = name 

    def common_numbers(self): 
     for x in self.name: 
      if x in self.variable_list: 
       yield(x) 

x = union(a) 
x.variable_list = b 
print list(x.odd_numbers(c)) 
Verwandte Themen