2016-06-09 146 views
0

內調用函數請參閱示例代碼:蟒蛇 - 同一類

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))) 

我想了解如何同一個類中調用其他功能。正如你所看到的,我試圖從branches函數中找到奇數。

請理解這是示例工作。我知道有很多解決方案可以使用或不使用類來獲得所有權結果。但在這種情況下,我不需要結果,如果你能幫助我理解在課堂上調用其他功能,我真的會很滿意。對不起,我的英語和先謝謝你。

回答

2

由於您從未實際定義self.variable_list,因此您會收到錯誤。它只有在你叫conversumbers()時才定義,但你永遠不會這麼做。開始時,您可以將其定義:

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)) 

或啓動後,但調用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))