Python中的全局变量、成员变量和实例变量



你能给我一个全局变量、成员变量和实例变量高亮的程序示例吗?我不确定我是否会在上下文中认出它们。最好是Python,但也可以是其他类似的编程语言。

您在一个问题下问了很多问题!我将尝试回答每一个问题:)

变量-全局与局部

全局变量是指范围为全局的变量,即在整个程序中可用的变量。

相比之下,局部变量是那些存在于一个特定范围、函数、循环内、特定条件内的变量。

以下是示例:

glb_var_1 = "some value"
glb_var_2 = "some other value"
def f1():
   local_var_1 = "this is local inside f1"
   print("f1(): We can use here all variables defined locally, i.e. inside f1():", local_var_1)
   print("f1(): We can use global var anywhere in program:", glb_var_1)
def f2():
   local_var_1 = "this is local inside f2"
   glb_var_1   = "this is local variable which is hiding global var of same name"
   print("f2(): locally inside f2():", local_var_1)
   print("f2(): same name as global var, but local to f2():", glb_var_1)
def f3():
    print("f3(): global var value would be one defined globally, not the one as defined in f2():", glb_var_1)

事实上,在Python中,有一些函数可以为您提供定义的所有全局变量和局部变量的列表。这些功能是:

CCD_ 1和CCD_

成员变量

成员变量只是在类中定义的那些变量。这些变量可以在类的方法中的任何地方使用,也可以从类的对象名中使用。

下面的例子说明了这一点:

class SomeClass(object):
    def __init__(self):
        self.member_var_1 = "some value"
        self.member_var_2 = "some other value"
    def method1(self):
        print("Could use any member variables here:", self.member_var_1)
        self.member_var_1 = "new value"
    def method2(self):
        print("If this method is called after method1, we will get new value:", self.member_var_1)
# create object/instance of SomeClass
obj = SomeClass()
# could also use member variables like below
obj.member_var_1 = "new value modified outside method"
# similar to how we call the method of a class
obj.method2()

类变量与实例变量

我们在上面的代码列表中看到的成员变量只不过是实例变量。类变量是那些在类级别可用的变量。这意味着,该类的所有实例都是一样的。我们也可以使用类变量,而不考虑任何类实例。

下面的例子可以更好地解释它:

class SomeClass(object):
    class_var_1 = "some value"
    class_var_2 = "some other value"
    def some_method(self):
        print("Could use all class members, but need to use special syntax:", SomeClass.class_var_1)
print("Outside class method, no instance created, still can use class member:",  SomeClass.class_var_1)
obj = SomeClass()
obj.some_method()

我希望你现在明白了:)

相关内容

  • 没有找到相关文章

最新更新