区别模块变量与类中的变量
写代码的时候,随时都要有栈、堆、全局变量区的概念
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是全局变量,出栈自动销毁
类属性存在的意义?
可以维持各种状态,在面向过程的语言中,很难维持多个状态或者说实现比较困难