第十四课:Python学习之类和对象

类和对象

目标

  • 类和对象的概念
  • 类和对象的关系
  • 类的设计

01. 类和对象的概念

类 和 对象 是 面向对象编程的 两个 核心概念

1.1 类

  • 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用
    • 特征 被称为 属性
    • 行为 被称为 方法
  • 类 就相当于制造飞机时的图纸 ,是一个 模板 ,是 负责创建对象的

1.2 对象

  • 对象 是 由类创建出来的一个具体存在,可以直接使用
  • 由 哪一个类 创建出来的 对象 ,就拥有在 哪一个类 中定义的:
    • 属性
    • 方法
  • 对象 就相当于用 图纸 制造 的飞机

在程序开发中,应该 先有类,再有对象

02. 类和对象的关系

  • 类是模板 ,对象 是根据 类 这个模板创建出来的,应该 先有类,再有对象
  • 类 只有一个,而 对象 可以有很多个
    • 不同的对象 之间 属性 可能会各不相同
  • 类 中定义了什么 属性和方法 ,对象 中就有什么属性和方法,不可能多,也不可能少

03. 类的设计

在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!

在程序开发中,要设计一个类,通常需要满足一下三个要素:

  1. 类名 这类事物的名字,满足大驼峰命名法
  2. 属性 这类事物具有什么样的特征
  3. 方法 这类事物具有什么样的行为

大驼峰命名法

CapWords

  1. 每一个单词的首字母大写
  2. 单词与单词之间没有下划线

3.1 类名的确定

名词提炼法 分析 整个业务流程 ,出现的 名词,通常就是找到的类

3.2 属性和方法的确定

  • 对 对象的特征描述 ,通常可以定义成 属性
  • 对象具有的行为 (动词),通常可以定义成 方法

提示:需求中没有涉及的属性或者方法在设计类时,不需要考虑

练习 1

需求

  • 小明 今年 18 岁 ,身高 1.75 ,每天早上 跑 完步,会去 吃 东西
  • 晓梅 今年 17 岁 ,身高 1.65 ,小美不跑步,小美喜欢 吃 东西
python 复制代码
class Person:
    def __init__(self, name,weight):
        # self.属性 = 形参
        self.name = name
        self.weight = weight
    def __str__(self):
        return "我的名字叫 %s, 体重是 %.2f" % (self.name, self.weight)

    def run(self):
        print("%s 爱运动" % self.name)
        self.weight -=0.5
    def eat(self):
        print("%s 爱吃东西" % self.name)
        self.weight += 1

xiaoming = Person("xiaoming",75)

xiaoming.run()
xiaoming.eat()

print(xiaoming)

xiaomeing = Person("晓梅" , 45)
xiaomeing.run()
xiaomeing.eat()
print(xiaomeing)

本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!

相关推荐
for_ever_love__4 分钟前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司7 分钟前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*8 分钟前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
sunshine22 girl18 分钟前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
XiaoMaqqqq31 分钟前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
菜鸟~noob2331 小时前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
ShyanZh1 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
传奇开心果编程1 小时前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui
一条破秋裤1 小时前
内核驱动的意义与课程学习规划
学习
惊讶的猫2 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python