Python 如何从main引用嵌套在类中的定义变量
我想知道(在Python中)如何引用def中、类中的变量。例如: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 .
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):
类没有“参数”。您将类的定义与实例的创建混为一谈。我的回答回答了你原来的问题