如何引用嵌套在主

时间:2017-06-06 17:54:22

标签: python class reference

我想知道(在Python中)如何在类中引用def内部的变量。例如:

class class_name():
    .
    .    # Some more definitions in here
    . 

    def definition_name():
        variable_of_interest = 10    # 10 chosen arbitrarily
    .
    .    # Some more definitions in here
    .

if __name__ == '__main__': 
    # Here I want to reference variable_of_interest. Example:
    if variable_of_interest = 10
        do stuff

更好的是,如果示例如下所示,我如何在main中引用变量:

class class_name():

    def __init__(self):
        # Some code
        def _another_definition():
            variable_of_interest = 10

if __name__ == '__main__':
    #same as before

所以基本上我如何引用一个像Class()> Def()> Def()>变量一样的变量?

1 个答案:

答案 0 :(得分:1)

你所谓的def实际上是一个函数,或者在这种情况下是一个类中的方法。

方法中定义的变量通常不可用。这就是封装的整个想法。

如果要访问类中的变量,则应该是类或实例变量。

实例中定义的变量成员需要作为类实例的一部分进行访问。它在__init__()中定义。

例如:

class MyClass:
    def __init__(self):
        self.data = []

访问:

x = MyClass() # instantiate an object of this class
x.data # access instance member

可以在类定义的顶部定义类变量:

class MyClass:
    """A simple example class"""
    i = 12345

然后可以使用MyClass.i访问它。

请查看此Python tutorial on classes以更好地理解这一点。

如果你真的想在类方法中拥有一个变量,也可以在主上下文中直接访问,那么你可以通过在global前面加上它来使它成为一个全局变量。否则,变量默认为本地变量,只能在同一范围内访问。