77_类属性

81.类属性

类属性是从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以 被所有实例对象共享

类属性的定义方式:

class 类名: 
    类变量名= 初始值

在类中或者类的外面,我们可以通过:“类名.类变量名”来读写。

【操作】 类属性的使用测试

# 类属性(也就是 模具 的 属性  或者叫  变量, 可以被所有 实例对象(创建的饼干) 共享)


class Student_01:  # 很重要 很重要 很重要 很重要
    company = "haizeiwang"  # 类属性
    count = 0  # 类属性

    def __init__(self, name, score):
        self.name = name  # 实例属性
        self.score = score
        Student_01.count = Student_01.count+1

    def say_score(self):  # 实例方法   会被加载到  模具 也就是类里面   以及  把地址 给 造出来的饼干(也就是 实例对象 )去 调用
        # 虽然 实例方法 从属于  实例对象   但是  运行期  代码在    模具里面
        print('我来自:', Student_01.company)
        print(self.name, '的分数是:', self.score)


k2 = Student_01('张三', 80)  # k2是实例对象,自动调用__init__()方法,这个方法是 两个  下划线  不要忘记了
k2.say_score()
k3 = Student_01('lixiao', 60)
k4 = Student_01('lidepeng', 100)
print('一共创建{0}个Student对象'.format(Student_01.count))



# tips: 注意区分 类属性和 实例属性的区别。
# 类属性 是 创建在 类里面的属性。

# 而实例属性 是 写在 `self` 上的属性。

# 而每个类都有 初始化的 实例属性。  他们的初始值相同。 
# 但是  在 实例 1 上 修改 之后 。
# 实例 2 的属性值 是不变的。
In [3]: k3.company # 可以看到  k3 修改了 所谓的类属性。 但是 其实 是通过 k3 调用的 所以 本质还是 实例属性。

Out[3]: 'haizeiwang'

In [4]: k3.company='biu'

In [5]: k4.company # k3 修改之后 k4 的 company 属性没有改变
Out[5]: 'haizeiwang'

In [6]: Student_01.company # 而这才是真正的 类属性。
Out[6]: 'haizeiwang'
In [7]: Student_01.company='biubiu' # 当我修改了 类属性 之后

In [8]: k4.company  # k4 没有 在实例对象上修改过。 所以 他还是 共享的  类属性的值
Out[8]: 'biubiu'

In [9]: k3.company # k3 实例对象 自己修改过了。 所以他 使用他自己的 属性值。
Out[9]: 'biu'

运行结果:

我来自: haizeiwang
张三 的分数是: 80
一共创建3个Student对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值