类变量与实例变量
类变量: 和类相关的变量, 和对象无关
实例变量: 是和对象相关联的变量
class Student(object):
# 默认属性,也叫类变量
name = ''
age =0
country = "China"
# 构造函数 在类实例化的时候会主动优先执行(无需人为调用), 用于初始化对象
def __init__(self,name,age): # 这里的self名字可以随便换,比如this,但是官方推荐用self
# 实例变量
self.name = name
self.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)
print(Student.name)
print(Student.country)
140360523161408
140360523559168
Scott 18
Judy 19
China
为什么print(Student.name)
打印为''
,类属性与对象无关。
可以发现类变量和实例变量冲突了,那么类变量存在的意义是什么?
class Student(object):
# 默认属性,也叫类变量
# 一个班级里所有学生的总数
sum = 0
country = "China"
# 构造函数 在类实例化的时候会主动优先执行(无需人为调用), 用于初始化对象
def __init__(self,name,age): # 这里的self名字可以随便换,比如this,但是官方推荐用self
# 实例变量
self.name = name
self.age = age
统计失败了??怎么才能修改类属性呢
class Student(object):
# 默认属性,也叫类变量
# 一个班级里所有学生的总数
sum = 0
country = "China"
# 构造函数 在类实例化的时候会主动优先执行(无需人为调用), 用于初始化对象
def __init__(self,name,age): # 这里的self名字可以随便换,比如this,但是官方推荐用self
# 实例变量
self.name = name
self.age = age
self.sum += 1
s1 = Student("zhangsan",2)
s2 = Student("lisi",3)
print(Student.sum) #0
print(s2.sum) #1
改造一下:
class Student(object):
# 默认属性,也叫类变量
# 一个班级里所有学生的总数
sum = 0
country = "China"
# 构造函数 在类实例化的时候会主动优先执行(无需人为调用), 用于初始化对象
def __init__(self,name,age): # 这里的self名字可以随便换,比如this,但是官方推荐用self
# 实例变量
self.name = name
self.age = age
Student.sum += 1
s1 = Student("zhangsan",2)
s2 = Student("lisi",3)
print(Student.sum) #2
print(s2.sum) #2
print(s1.sum) #2
python 是入门简单,精通难