【Python使用】嘿马python基础入门全体系教程第12篇:类和对象,添加和获取对象的属性【附代码文档】

举报
程序员一诺python 发表于 2025/09/25 15:20:29 2025/09/25
【摘要】 1.Python函数高级特性包括匿名函数(lambda语法格式、与普通函数区别、应用场景、参数形式)。2. 文件操作涵盖文件打开关闭、文件读写(write写数据、readlines读数据)。3. 面向对象编程包括类和对象(类定义、对象创建、类对象关系)、类构成、self关键字、对象属性操作、构造方法__init__、字符串方法__str__、多继承、子类重写、多态概念及应用、类

🏆🏆🏆教程全知识点简介:1.Python函数高级特性包括匿名函数(lambda语法格式、与普通函数区别、应用场景、参数形式)。2. 文件操作涵盖文件打开关闭、文件读写(write写数据、readlines读数据)。3. 面向对象编程包括类和对象(类定义、对象创建、类对象关系)、类构成、self关键字、对象属性操作、构造方法__init__、字符串方法__str__、多继承、子类重写、多态概念及应用、类属性和实例属性、静态方法和类方法。4. 异常处理涵盖异常传递(try嵌套、函数嵌套调用)、自定义异常抛出。5. 模块系统包括Python模块概念、import导入机制、学生管理系统应用。6. 计算机基础涉及计算机组成、硬件系统、程序处理机制、编程语言概念、Python介绍、解释器作用。7. Python语法基础包括注释分类、输出(格式化输出、转义字符、结束符)、输入语法、数据类型转换、运算符(算数运算符)。8. 控制流程涵盖判断语句(if语句、if-else、if-elif-else、三目运算、if嵌套)、循环语句(while循环、for循环、break和continue)。9. 数据容器包括字符串操作(rfind、partition、splitlines、isalpha、isdigit)、列表(列表格式、相关操作、循环遍历、嵌套)、元组、字典(键值访问)、公共方法、容器类型转换、推导式(列表推导式、多for循环)。10. 函数进阶涵盖函数返回值、函数文档说明、函数嵌套调用、变量作用域(局部变量、全局变量、global关键字)、拆包和变量交换、引用概念、可变不可变类型、函数使用注意事项


📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/459423    中查看

📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/453468    中查看

📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/459423    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

类和对象

面向对象编程的2个非常重要的概念:类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

1. 类

学习编程语言,就是为了模拟现实世界中的事物,实现信息化来提高工作效率。例如银行的业务系统、超市的结账系统等,都是如此。

面向对象的语言当中,“类”就是用来模拟现实事物的。

那么模拟现实世界的事物通常从两方面模拟:

  1. 属性:事物的特征描述信息,用于描述某个特征“是什么”。 静
  2. 行为:事物的能力行动方案,用于说明事物“能做什么”。

类中也有属性、行为两个组成部分,而“对象”是类的具体实例。例如:

  1. :抽象的,是一张“手机设计图”。
  2. 对象:具体的,是一个“真正的手机实例”。

类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象

人以类聚 物以群分
具有相似内部状态和运动规律的实体的集合(或统称为抽象) 
具有相同属性和行为事物的统称

类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象

2. 对象

某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的

可以是直接使用的

图片无法加载

3. 类和对象之间的关系

小总结:类就是创建对象的模板

4. 练习:区分类和对象

奔驰汽车 
奔驰smart  
张三的那辆奔驰smart 对象
 
大黄狗  
李四家那只大黄狗 对象 
水果 
苹果  
红苹果  红富士苹果  
我嘴里吃了一半的苹果 对象

5. 类的构成

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对进行操作的方法 (行为)

<1> 举例:1>

1)人类设计,只关心3样东西:

  • 事物名称(类名):人(Person)
  • 属性:身高(height)、年龄(age)
  • 方法(行为/功能):跑(run)、打架(fight)

2)狗类的设计

  • 类名:狗(Dog)
  • 属性:品种 、毛色、性别、名字、 腿儿的数量
  • 方法(行为/功能):叫 、跑、咬人、吃、摇尾巴

6. 类的抽象

如何把日常生活中的事物抽象成程序中的类?

拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

方法:一般名词都是类(名词提炼法)

<1> 坦克发射3颗炮弹轰掉了2架飞机1>

  • 坦克--》可以抽象成 类
  • 炮弹--》可以抽象成类
  • 飞机-》可以抽象成类

<2> 小明在公车上牵着一条叼着热狗的狗2>

  • 小明--》 人类
  • 公车--》 交通工具类
  • 热狗--》 食物类
  • 狗--》 狗类

<3>【想一想】如下图中,有哪些类呢?3>

说明:

  • 子弹
  • 手榴弹
  • 刀子
  • 箱子

<4>【想一想】如下图中,有哪些类呢?4>

说明:

  • 向日葵

  • 类名: xrk

  • 属性:
  • 行为: 放阳光

  • 豌豆

  • 类名: wd

  • 属性: 颜色 、发型,血量
  • 行为:发炮, 摇头

  • 坚果:

  • 类名:jg

  • 属性:血量 类型
  • 行为:阻挡;

  • 僵尸:

  • 类名:js

  • 属性:颜色、血量、 类型、速度
  • 行为:走 跑跳 吃 死

定义类

定义一个类,格式如下:

class 类名:
    方法列表

demo:定义一个Hero类

# class Hero:  # 经典类(旧式类)定义形式




# class Hero():



class Hero(object):  # 新式类定义形式
    def info(self):
        print("英雄各有见,何必问出处。")

[Python 教程]

[schedule 文档]

说明:

  • 定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,前两行注释部分则为经典类;

  • object 是Python 里所有类的最顶级父类;

  • 类名 的命名规则按照"大驼峰命名法";

  • info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象

创建对象

python中,可以根据已经定义的类去创建出一个或多个对象。

创建对象的格式为:

对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()

创建对象demo:

class Hero(object):  # 新式类定义形式
    """info 是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
    def info(self):
        """当对象调用实例方法时,Python会自动将对象本身的引用做为参数,
            传递到实例方法的第一个参数self里"""
        print(self) 
        print("self各不同,对象是出处。")




# Hero这个类 实例化了一个对象  taidamier(泰达米尔)


taidamier = Hero()



# 对象调用实例方法info(),执行info()里的代码




# . 表示选择属性或者方法


taidamier.info()

print(taidamier)  # 打印对象,则默认打印对象在内存的地址,结果等同于info里的print(self)
print(id(taidamier))  # id(taidamier) 则是内存地址的十进制形式表示

说明:

  • 当创建一个对象时,就是用一个模子,来制造一个实物

self

self指的是调用该函数的对象。

# 1. 定义类


class Washer():
    def wash(self):
        print('我会洗衣服')
        # <__main__.Washer object at 0x0000024BA2B34240>
        print(self)




# 2. 创建对象


haier1 = Washer()


# <__main__.Washer object at 0x0000018B7B224240>


print(haier1)


# haier1对象调用实例方法


haier1.wash()


haier2 = Washer()


# <__main__.Washer object at 0x0000022005857EF0>


print(haier2)

注意:打印对象和self得到的结果是一致的,都是当前对象的内存中存储地址。

问题:

对象既然有实例方法,是否也可以有自己的属性?

添加和获取对象的属性

属性即是特征.

对象属性既可以在类外面添加和获取,也能在类里面添加和获取。

class Hero(object):
    """定义了一个英雄类,可以移动和"""
    def move(self):
        """实例方法"""
        print("正在前往事发地点...")

    def attack(self):
        """实例方法"""
        print("发出了一招强力的普通...")



# 实例化了一个英雄对象 泰达米尔


taidamier = Hero()



# 给对象添加属性,以及对应的属性值


taidamier.name = "泰达米尔"  # 姓名
taidamier.hp = 2600  # 生命值
taidamier.atk = 450  # 力
taidamier.armor = 200  # 护甲值



# 通过.成员选择运算符,获取对象的属性值


print("英雄 %s 的生命值 :%d" % (taidamier.name, taidamier.hp))
print("英雄 %s 的力 :%d" % (taidamier.name, taidamier.atk))
print("英雄 %s 的护甲值 :%d" % (taidamier.name, taidamier.armor))



# 通过.成员选择运算符,获取对象的实例方法


taidamier.move()
taidamier.attack()

[Starlette 文档]

[tqdm 文档]

问题:

对象创建并添加属性后,能否在类的实例方法里获取这些属性呢?如果可以的话,应该通过什么方式?

在方法内通过self获取对象属性

```python class Hero(object): """定义了一个英雄类,可以移动和""" def move(self): """实例方法""" print("正在前往事发地点...")

def attack(self):
    """实例方法"""
    print("发出了一招强力的普通...")

def info(self):
    """在类的实例方法中,通过self获取该对象的属性"""
    print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
    print("英雄 %s 的力 :%d" % (self.name, self.atk))
    print("英雄 %s 的护甲值 :%d" % (self.name, self.armor))

实例化了一个英雄对象 泰达米尔

taidamier = Hero()

给对象添加属性,以及对应的属性值

taidamier.name = "泰达米尔" # 姓名 taidamier.hp = 2600 # 生命值 taidamier.atk = 450 # 力 taidamier.armor = 200 # 护甲值

通过.成员选择运算符,获取对象的实例方法

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。