面向对象的基本语法 | 学习笔记

简介: 快速学习 面向对象的基本语法

开发者学堂课程【Python入门 2020年版面向对象的基本语法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10367


面向对象的基本语法


内容介绍:

一、类和对象

二、练习


一、类和对象

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

1)类

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用(表达有误,也是可以直接使用的)

特征其实就是一个变量,在类里我们称之为属性。

行为其实就是一个函数,在类里我们称之为方法。

类其实就是由属性和方法组成的一个抽象概念。

类就相当于制造飞机时的图纸,是一个模板。

这个模板只规定了飞机的某些特征(例如大小,颜色,型号等等)和行为(例如起飞,降落,飞行等等),它并不是一个具体的飞机,而是对飞机的一个抽象概念。它出现的目的,是为了让我们的创建飞机对象。

在上次的例子中,在提到人的时候并没有特指某一个人,每个人想到的人都是不一样的,但他们有共同的特征,比如有鼻子、眼睛、会直立行走,说明对人这个类达成了一个共识,他们的特征就是如此,这就是类的概念。

但当提到特定的人的时候,例如周杰伦,会得到相对应的特征。提到狗就会想到对应的特征,有毛有尾巴,但具体想到的狗的品种是不一样的。需要具体到某一个类具体的事物。

2)对象                

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

在开发中,应该先有类,在类里定义好属性和行为,再根据类来创建对象。

3)类和对象的关系

类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。

使用同一个类,能够创建出很多对象。

类中定义了什么属性和方法,对象中就有什么属性和方法。

不同对象对应的属性值也会不同。

例如:定义了一个狗类,这个狗类有以下属性:

品种

颜色

性别

名字

现在根据这个类创建出了两条狗,这两条狗分别是 哈士奇、灰色、母、二哈和中华田园犬、黄色、公、旺财。

我们发现,这两条狗都具有品种,颜色、性别和名字这些属性,但是每条狗对应的属性值却不一样。

4)类的设计

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

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

1.费名这类事物的名字,安照大驼峰命名法(每个单词的首字母大写)起名。

2.属性这类事物具有什么样的特征。

3.方法这类事物具有什么样的行为。

5)定义类名

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

6)属性和方法的确定

对对象的特征描述,可以定义成属性

对象具有的行为”(动词)可以定义成方法


二、练习

1)需求1

小明今年18岁,身高1.75,每天早上跑完步,会去吃东西

小美今年17岁,身高1.65,小美不跑步,小美喜欢吃东西

从这两句话中可以总结出来,在拿到需求之后,需要把上面两句话抽象成一个类。

新建 python 文件,命名为06-面向对象的基本语法

首先第一步是创建并定义一个类:类名怎么定义?

使用一个类来定义 class 根据业务需求完成,关键字就是 classclass 后在类名,在这里是一个学校管理系统,所以类名为 Student

但如果是社区登记之类的,在这类名可以改成 Person,总之类名是根据需求来确定,要放在实际情况中。由于在这里没有具体的语境,在这认为是学生类。

class类名:类名一般需要遵守大驼峰命名发,每一个单词的首字母大写

有两种写法,这两者没有太大的区别

1.class  <类名>

2.class  <类名>(object):

可能会见到以下类似的代码:

class Student(object):

pass

在曾经的一个 builtins.py 文件中会有很多的内置函数。除此之外还有许多内置的类,例如 int 类,它的写法就是 class int(object):,不过系统内置的类名是小写的,自己再写类名的时候要注意大写字母开头。

在定义类的时候要关注类有的属性和行为,分析得出了有名字、年龄、身高属性,需要在__init__方法里,以参数的形式定义属性。

把属性的特征在 init 方法中,以参数的形式定义特征,称之为属性。行为定义为一个个函数。

创建新的对象 s1 =  Student() Student()è 会直接调用__init__,调用init后,需要调用三个参数,需要加入内容。在使用 Student 类创建两个实例对象后,两个都会有 nameageheight 属性,同时都有 run eat 方法。

再根据题目需要选择执行的行为,这的行为用函数来定义。

def ___int__(self):

pass

注意:记得区分 init int 这两个函数

代码整体变为:

class Student(object):

def ___init__(self,name,age,height):

self.name = name

self.age = age

self.height = height

def run(self)

print(’正在跑步’)

def eat(self)

print(‘正在吃东西’)

s1 = Student(‘小明’,18,1.75)

s1 = Student(‘小美丽’,17,1.65)

s1.run()

s1.eat()

s2.eat()

2)需求2

一只黄颜色的狗狗叫大黄

看见生人汪汪叫

看见家人摇尾巴

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1092 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1768 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
700 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
663 13
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
455 5