Python|在类和方法内外使用变量
在Python中,我们可以在类外、类内、甚至方法内定义变量。让我们看看,如何在整个程序中使用和访问这些变量。
类外定义的变量:
类外定义的变量,只要写下变量名,就可以被任何类或类中的任何方法访问。
# Program to demonstrate 'Variable
# defined outside the class'
# Variable defined outside the class.
outVar = 'outside_class'
print("Outside_class1", outVar)
''' Class one '''
class Geek:
print("Outside_class2", outVar)
def access_method(self):
print("Outside_class3", outVar)
# Calling method by creating object
uac = Geek()
uac.access_method()
''' Class two '''
class Another_Geek_class:
print("Outside_class4", outVar)
def another_access_method(self):
print("Outside_class5", outVar)
# Calling method by creating object
uaac = Another_Geek_class()
uaac.another_access_method()
输出:
Outside_class1 outside_class
Outside_class2 outside_class
Outside_class3 outside_class
Outside_class4 outside_class
Outside_class5 outside_class
类内部定义的变量:
可以使用类的实例在类内(包括所有方法)访问在类内部但在方法外部定义的变量。例如 – self.var_name。
如果您想在类之外使用该变量,则必须将该变量声明为全局变量。然后可以在类内部和外部使用其名称访问该变量,而不是使用该类的实例。
# Program to demonstrate 'Variable
# defined inside the class'
# print("Inside_class1", inVar) # Error
''' Class one'''
class Geek:
# Variable defined inside the class.
inVar = 'inside_class'
print("Inside_class2", inVar)
def access_method(self):
print("Inside_class3", self.inVar)
uac = Geek()
uac.access_method()
''' Class two '''
class another_Geek_class:
print()
# print("Inside_class4", inVar) # Error
def another_access_method(self):
print()
# print("Inside_class5", inVar) # Error
uaac = another_Geek_class()
uaac.another_access_method()
输出:
Inside_class2 inside_class
Inside_class3 inside_class
标记为错误的语句将在执行时产生错误,因为那里无法访问变量。
方法内部定义的变量:
在方法内定义的变量只能通过简单地使用变量名在该方法内访问。示例 – var_name。
如果要在方法或类之外使用该变量,则必须将该变量声明为全局变量。
# Program to demonstrate 'Variable
# defined inside the method'
# print("Inside_method1", inVar) # Error
'''class one'''
class Geek:
print()
# print("Inside_method2", inVar) # Error
def access_method(self):
# Variable defined inside the method.
inVar = 'inside_method'
print("Inside_method3", inVar)
uac = Geek()
uac.access_method()
'''class two'''
class AnotherGeek:
print()
# print("Inside_method4", inVar) # Error
def access_method(self):
print()
# print("Inside_method5", inVar) # Error
uaac = AnotherGeek()
uaac.access_method()
输出:
Inside_method3 inside_method
标记为错误的语句将在执行时产生错误,因为那里无法访问变量。
概括: