理解如何从方法中导入变量

0 投票
2 回答
783 浏览
提问于 2025-04-16 10:40

假设我有这样的东西:

这是文件 tree.py:

class leaf():
def green():
    x = 100

这是文件 view.py:

from tree import leaf.green 
g = green()
print g.x

我该如何从子类中获取变量 green 呢?我知道如果是类的话,只需要:

这是文件 tree.py:

class leaf():

    x = 100

这是文件 view.py:

from tree import leaf 
class view():
 g = leaf()
 print g.x

我知道如果两个类在同一个文件里该怎么做,但我不明白在两个不同的文件里该怎么处理。

谢谢,
约翰

2 个回答

1

x 是这个方法内部的一个变量,也就是说,它不能被外部访问(至少不容易访问)。更糟糕的是,它只在方法运行的时候存在(方法结束后就会被删除)。

需要注意的是,你可以给一个方法(其实是任何函数)赋值一个属性:

class Leaf(object):
    def green(self):
        ...
    green.x = 100

print Leaf.green.x

但这可能不是你想要的(首先,你不能在方法内部把它当作局部变量来使用——因为它不是局部变量),而且实际上很少有用处(除非你有非常好的理由不这样做,通常情况下还是用类比较好)。

2

我觉得你问题的根本原因是你需要更多了解Python中的类是怎么工作的。幸运的是,Python文档里的教程有一部分专门讲类

如果这些还不够,试试《艰难学Python》,做里面的练习会非常有帮助。

撰写回答