开发者学堂课程【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 根据业务需求完成,关键字就是 class,class 后在类名,在这里是一个学校管理系统,所以类名为 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 类创建两个实例对象后,两个都会有 name,age,height 属性,同时都有 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:
一只黄颜色的狗狗叫大黄
看见生人汪汪叫
看见家人摇尾巴