区别模块变量与类中的变量

写代码的时候,随时都要有栈、堆、全局变量区的概念

c = 50

def add(x,y):
    c = 3
    print(c)

add(1,2)
print(c)  # 局部变量怎么玩都不会影响全局变量
3 
50

3是在运行add()方法时打印的, 50是打印全局变量

再来看这个例子

class Student(object):
    # 默认属性
   name = ''
   age =0
    # 构造函数 在类实例化的时候会主动优先执行(无需人为调用), 用于初始化对象
    def __init__(self,name,age):
        name = name
        age = age

s1 = Student("Scott",18)
s2 = Student("Judy",19)  

print(id(s1))
print(id(s2))
print(s1.name,s1.age)
print(s2.name,s2.age)

为什么name,age都赋值失败?

因为方法中的name,age是全局变量,出栈自动销毁

类属性存在的意义?

可以维持各种状态,在面向过程的语言中,很难维持多个状态或者说实现比较困难

results matching ""

    No results matching ""