首页 > 解决方案 > 在 __init__ 下声明的普通变量

问题描述

在下面的示例中,我使用我的类 Classy 声明了一个对象 obj1。初始化 obj1 时,我使用 self.var 声明一个变量,并且我有一个可以打印到控制台的实例对象。一切都直截了当。

我的问题是围绕我设置的另一个变量,命名变量。运行我的代码不会产生任何错误,但我(似乎)无法访问它。它既不是Classy的类变量,也不是obj1的实例变量。

变量在哪里?

class Classy:

    def __init__(self, value):
        self.var = value
        variable = 1


obj1 = Classy("object")
print(obj1.var)

目的

标签: pythonclassobjectvariablesinit

解决方案


您命名的变量variable是局部变量。具体来说,它是__init__()方法的本地。您将无法在该方法之外访问它。您只能在方法内部访问它。在方法内部创建的局部变量__init__()实际上仅用于创建其他实例变量:

class Classy:

    def __init__(self, value):
        self.var = value
        variable = 1
        self.new_var = variable + 1 # new_var is 2


obj1 = Classy("object")
print(obj1.var)

推荐阅读