python 类属性 实例属性_类属性和实例属性

类属性和实例属性

下表列出了 4 个常见的明星人物:

姓名

年龄

周润发

58

成龙

55

刘德华

53

周星驰

54

进行归纳总结:

这些人物具有较高的知名度,把这些人物归类为明星。

每个明星两个属性:姓名和年龄。明星这个群体具有一个属性:数量,在这张表格中,明星的数量是 4。

姓名和年龄等属性是用于描述具体的一个对象(例如:周润发),而人物的数量是用于描述明星这个类别。

如果使用面向对象技术对以上实体进行描述,周润发、成龙、刘德华、周星驰等人物是对象,描述这些知名人物的抽象是类,需要区分位于不同层次的属性:

隶属于具体对象的属性,例如:姓名、年龄

隶属于类的属性,例如:人物数量

本节讲解在 Python 中这两个层次上的属性的概念和使用。

1. 实例属性

实例属性是隶属于具体对象的属性,用于描述具体的对象。示例代码如下:

在第 1 行,定义了类 Person

在第 4 行,使用类 Person 创建一个对象 zhou

在第 5 行,设置对象 zhou 的属性 name,该属性为实例属性

在第 6 行,设置对象 zhou 的属性 age,该属性为实例属性

在第 7 行,打印对象 zhou 的属性 name 和 age

在第 9 行,使用类 Person 创建一个对象 liu

在第 10 行,设置对象 liu 的属性 name,该属性为实例属性

在第 11 行,设置对象 liu 的属性 age,该属性为实例属性

在第 12 行,打印对象 liu 的属性 name 和 age

程序运行输出如下:

2. self 参数

在前面的例子中,存在两个对象 zhou 和 liu,通过 zhou.name、liu.name 这样的形式访问实例属性。上面的例子存在一个显著的问题:

在第 7 行,使用 print(‘name = %s, age = %d’ % (zhou.name, zhou.age)) 打印对象 zhou

在第 12 行,使用 print(‘name = %s, age = %d’ % (liu.name, liu.age)) 打印对象 liu

以上这两行代码是雷同的,功能是重复的。Python 允许在类中定义方法,访问对象的属性,语法如下:

在类中定义的方法,第一个参数 self 指向调用该方法的对象,在方法中通过 “self.属性” 这样的形式访问对象的实例属性。示例代码如下:

在第 1 行,定义了类 Person

在第 2 行,定义了类 Person 的方法 introduce,introduce 的 self 参数指向调用 introduce 方法的对象

在第 3 行,introduce 方法通过 self.name 和 self.age 访问对象的属性

在第 5 行,使用类 Person 创建一个对象 zhou

在第 6 行,设置对象 zhou 的属性 name,该属性为实例属性

在第 7 行,设置对象 zhou 的属性 age,该属性为实例属性

在第 8 行,调用对象 zhou 的方法 introduce,对象 zhou 被传递给方法 introduce,作为 self 参数,在执行 introduce 时,self 参数指向对象 zhou

在第 10 行,使用类 Person 创建一个对象 liu

在第 11 行,设置对象 liu 的属性 name,该属性为实例属性

在第 12 行,设置对象 liu 的属性 age,该属性为实例属性

在第 13 行,调用对象 liu 的方法 introduce,对象 liu 被传递给方法 introduce,作为 self 参数,在执行 introduce 时,self 参数指向对象 liu

3. 类属性

类属性是隶属于类的属性,用于描述类的特征。

在 Python 中,类属性在类中的定义如下所示:

示例代码如下:

在第 1 行,定义了类 Person

在第 2 行,定义了类 Person 的属性 count,该属性是类属性,描述了 Person 对象的数量

在第 4 行,使用类 Person 创建一个对象 zhou

在第 5 行,设置对象 zhou 的属性 name,该属性为实例属性

在第 6 行,设置对象 zhou 的属性 age,该属性为实例属性

因为新创建了一个对象 zhou

在第 7 行,访问 Person 的类属性 count,对其增加 1

在第 8 行,打印 Person 的类属性 count

在第 10 行,使用类 Person 创建一个对象 liu

在第 11 行,设置对象 liu 的属性 name,该属性为实例属性

在第 12 行,设置对象 liu 的属性 age,该属性为实例属性

因为新创建了一个对象 liu

在第 13 行,访问 Person 的类属性 count,对其增加 1

在第 14 行,打印 Person 的类属性 count

程序运行输出如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值