同一类中的python调用函数

同一类中的python调用函数,python,function,class,Python,Function,Class,请参见示例代码: 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_l

请参见示例代码:

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)))
我试图理解如何在同一个类中调用其他函数。正如你们所看到的,我试图从公共_数函数中找到奇数


请理解这是样品工作。我知道有很多解决方案使用或不使用类来获得适当的结果。但在这种情况下,我不需要结果,如果您能帮助我理解在类中调用其他函数,我将非常感激。对不起,我的英语不好,先谢谢你。

你收到了错误,因为你从来没有定义过self.variable\u list。它只在您调用common_numbers()时定义,但您永远不会这样做。您可以在启动时定义它:

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))
或在启动后,但在拨打奇数号码之前:

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

您之所以会出现错误,是因为您从未真正定义self.variable\u list。它只在您调用common_numbers()时定义,但您永远不会这样做。您可以在启动时定义它:

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))
或在启动后,但在拨打奇数号码之前:

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