Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从main引用嵌套在类中的定义变量_Python_Class_Reference - Fatal编程技术网

Python 如何从main引用嵌套在类中的定义变量

Python 如何从main引用嵌套在类中的定义变量,python,class,reference,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 .

我想知道(在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
class MyClass:
    def __init__(self):
        self.data = []
更好的是,如果示例如下所示,我如何引用main中的变量:

class class_name():

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

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

因此,基本上我如何引用一个变量,它在main中的位置类似于Class()>Def()>Def()>variable?

您调用的
Def
实际上是一个函数,或者在本例中是类中的一个方法

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

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

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

例如:

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
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
访问它

看看这个,更好地理解它


如果您确实希望类方法中的变量也可以在主上下文中直接访问,那么可以通过在其前面加上
global
使其成为全局变量。否则,默认情况下,变量是本地变量,并且只能在同一范围内访问。

是否可以在函数中返回该变量?或者是一个类变量?变量的作用域是有限的,这是一件好事。如果要使其可访问,请为其创建一个附加属性,如
self.variable\u of\u interest
@depperm我不确定我是否理解您的要求,但感兴趣的变量将在另一个定义中的定义中定义,在类中。如果我将感兴趣的变量直接放在类中,那么我知道我只需执行
class\u name.variable\u of\u interest
即可获得值。但是当变量嵌套在类的更深处时,我还没有弄清楚该怎么做。所以我不能访问变量,除非它是类变量或成员?如何访问成员?我更新了答案。查看教程链接,了解这些基础知识down@DamianConnors你现在明白了吗?如果有帮助,则标记为已回答如果类有参数呢?我正在尝试你在这里写的东西,但是出错了。我的示例如下:
类自动收集(gr.top_block,Qt.Qwidget):
类没有“参数”。您将类的定义与实例的创建混为一谈。我的回答回答了你原来的问题