类变量与实例变量

类变量: 和类相关的变量, 和对象无关

实例变量: 是和对象相关联的变量

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 是入门简单,精通难

results matching ""

    No results matching ""