在_init下声明的正常变量__

2024-06-16 04:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的问题是关于我设置的另一个变量,变量。运行我的代码不会产生错误,但我(似乎)没有办法访问它。它既不是Classy的类变量,也不是obj1的实例变量

变量在哪里

class Classy:

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


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

object


Tags: 对象实例代码self声明示例objectvalue
3条回答

属性“variable”是一个局部属性,您只能在_init__;()方法内部访问它。事实上,如果您修改类并添加“print(locals)”

一流的班级:

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

您可以看到该属性存在于方法内部。但是如果你得到一个类的实例,然后写

c = classy(10)
print(c.__dict__)

print(dir(c))

您可以看到“变量”并没有在实例范围中声明。因此,“variable”仍然是一个dinamic属性,因为您在方法内部编写它(它不是静态的),但它和“var”之间的区别在于,您只能在init()方法内部使用“variable”

你可以试着写

class classy:

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

    def __increment__(self):
        self.var +=variable

c = classy()
c.__increment__()

请注意,您既不能在同一类中的另一个方法中使用它

变量variable的作用域是函数。当你从函数返回时,它就消失了

名为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)

相关问题 更多 >