在 __init__ 下声明的普通变量
Normal variables declared under __init__
在下面的示例中,我使用我的 class,Classy 声明了一个对象 obj1。
初始化 obj1 时,我使用 self.var 声明一个变量,并且我有一个可以打印到控制台的实例对象。一切顺利。
我的问题是关于我设置的另一个变量,named variable。 运行 我的代码没有产生任何错误,但我(似乎)无法访问它。既不是Classy的class变量,也不是obj1的实例变量。
变量在哪里?
class Classy:
def __init__(self, value):
self.var = value
variable = 1
obj1 = Classy("object")
print(obj1.var)
object
变量 variable
作用域为函数。当你从函数中 return 时,它就消失了。
您的名为 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)
属性“variable”是一个局部属性,您只能在 __init__() 方法内部访问。实际上,如果您修改 class 添加“print(locals)”
class classy:
def __init__(self,value):
self.var = value
variable = 1
print(locals())
你可以看到这个属性存在于方法内部。但是如果你得到你的 class 的一个实例然后写
c = classy(10)
print(c.__dict__)
或
print(dir(c))
您可以看到实例范围内没有声明“变量”。所以,“variable”仍然是一个动态属性,因为你把它写在一个方法里面(它不是静态的)但是它和“var”的区别是你只能在 init 内部使用“variable” () 方法。
你可以试试写
class classy:
def __init__(self,value):
self.var = value
variable = 1
def __increment__(self):
self.var +=variable
c = classy(10)
c.__increment__() # NameError: name 'variable' is not defined
发现您不能在同一个 class 的另一个方法中使用它。
在下面的示例中,我使用我的 class,Classy 声明了一个对象 obj1。 初始化 obj1 时,我使用 self.var 声明一个变量,并且我有一个可以打印到控制台的实例对象。一切顺利。
我的问题是关于我设置的另一个变量,named variable。 运行 我的代码没有产生任何错误,但我(似乎)无法访问它。既不是Classy的class变量,也不是obj1的实例变量。
变量在哪里?
class Classy:
def __init__(self, value):
self.var = value
variable = 1
obj1 = Classy("object")
print(obj1.var)
object
变量 variable
作用域为函数。当你从函数中 return 时,它就消失了。
您的名为 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)
属性“variable”是一个局部属性,您只能在 __init__() 方法内部访问。实际上,如果您修改 class 添加“print(locals)”
class classy:
def __init__(self,value):
self.var = value
variable = 1
print(locals())
你可以看到这个属性存在于方法内部。但是如果你得到你的 class 的一个实例然后写
c = classy(10)
print(c.__dict__)
或
print(dir(c))
您可以看到实例范围内没有声明“变量”。所以,“variable”仍然是一个动态属性,因为你把它写在一个方法里面(它不是静态的)但是它和“var”的区别是你只能在 init 内部使用“variable” () 方法。
你可以试试写
class classy:
def __init__(self,value):
self.var = value
variable = 1
def __increment__(self):
self.var +=variable
c = classy(10)
c.__increment__() # NameError: name 'variable' is not defined
发现您不能在同一个 class 的另一个方法中使用它。