02. Python 类属性和实例属性详解

AI 概述
1. 实例属性2. self 参数3. 类属性 下表列出了 4 个常见的明星人物: 姓名 年龄 周润发 58 成龙 65 刘德华 60 周星驰 64 进行归纳总结: 这些人物具有较高的知名度,把这些人物归类为明星; 每个明星两个属性:姓名和年龄。明星这个群体具有一个属性:数量,在这张表格中,明星的数量...
目录
文章目录隐藏
  1. 1. 实例属性
  2. 2. self 参数
  3. 3. 类属性

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

姓名 年龄
周润发 58
成龙 65
刘德华 60
周星驰 64

进行归纳总结:

  • 这些人物具有较高的知名度,把这些人物归类为明星;
  • 每个明星两个属性:姓名和年龄。明星这个群体具有一个属性:数量,在这张表格中,明星的数量是 4;
  • 姓名和年龄等属性是用于描述具体的一个对象(例如:周润发),而人物的数量是用于描述明星这个类别。

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

  • 隶属于具体对象的属性,例如:姓名、年龄
  • 隶属于类的属性,例如:人物数量

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

1. 实例属性

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

class Person:
    pass

zhou = Person()    
zhou.name = 'Zhou'
zhou.age = 58
print('name = %s, age = %d' % (zhou.name, zhou.age))

liu = Person()
liu.name = 'Liu'
liu.age = 53
print('name = %s, age = %d' % (liu.name, liu.age))
  • 在第 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

程序运行输出如下:

name = Zhou, age = 58
name = Liu, age = 60

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 允许在类中定义方法,访问对象的属性,语法如下:

class 类名:
    def 方法(self):
        self.属性

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

class Person:
    def introduce(self):
        print('name = %s, age = %d' % (self.name, self.age))

zhou = Person()    
zhou.name = 'Zhou'
zhou.age = 58
zhou.introduce()

liu = Person()
liu.name = 'Liu'
liu.age = 60
liu.introduce()
  • 在第 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 中,类属性在类中的定义如下所示:

class 类名:
    类属性 = 值

示例代码如下:

class Person:
    count = 0

zhou = Person()    
zhou.name = 'Zhou'
zhou.age = 58
Person.count = Person.count + 1
print('Person.count = %d' % Person.count)

liu = Person()
liu.name = 'Liu'
liu.age = 60
Person.count = Person.count + 1
print('Person.count = %d' % Person.count)
  • 在第 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

程序运行输出如下:

Person.count = 1
Person.count = 2

以上关于02. Python 类属性和实例属性详解的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 02. Python 类属性和实例属性详解

发表回复