12 第十二节课笔记(面向对象编程)
一、面向对象:是一种思维,使用这种思维设计的程序能够将数据和对数据进行的
操作封装在一起组成一个类,可以同多创建对象,通过对象之间的交互来解决问题。
二、面向对象编程(OOP;Object,Oriented,Programming):利用面向对象中类和对象的思维进行问题解决
三、面向过程与面向对象对比
面向过程:遇到问题自己解决;
面向对象:遇到问题,对像来解决全部或者部分问题。
四、什么是类和对象
类:具有相同属性和方法的人或物;类是抽象的。一个类可以有多个对象。
对像:是真实存在的具体的事物,它是类的实例化。
五、类和对象如何使用
1.定义一个学生类:使用关键字“class”
class Student:
创建一个类的属性
schoolUniform = ‘校服’
初始化方法(设置对象属性,静态属性)
def init(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
print(id(self), ‘+’)
# 在学生类中给学生构造方法
# def study(self):
# print(id(self), '=')
# return f'{self.age}岁的{self.name}穿着{Student.schoolUniform}在学习'
#
# def play(self, game):
# return f'{self.name}在玩{game}'
2.通过类实例化对象,使用构造器语法创建对象
stu = Student(‘许攸’, 30, ‘男’)
id:查看某一个数据类型在内存中的地址
print(id(stu), ‘*’)
3.对象调用对象方法(这个实例化出来的个体去做他能做的事)
a.对像.方法(参数)
print(stu.study())
b.类.方法(对像,参数)
print(Student.play(stu, ‘泰坦之旅’))
self:当使用实例调用类的方法时(即:对像.方法),self自定传参给对象
self指代被实例化出来的对象,相当于一个类中各部分传参的介质。
给某个对象赋予属性(对象属性)
对象属性:是某个个体自己独有的属性
类属性:整体的这一类大范围共同拥有的特点、属性;
例如学校这个类的类属性:有校服(schoolUniform = ‘校服’)
六、如何调用类属性
1.类名.类属性(Student.schoolUniform)
2.对像.类属性(stu.schoolUniform)
调用对象属性:
对像.对象属性(stu.name)
七、区分
对象方法:在类中定义的对象能够做的事情的方法,叫做对象方法,
方法中的第一个参数是self,指向对象
类方法:在类中给类定义的方法,需要写语法糖“@classmethod”,类方法中,
第一个参数是cls,指向类。
静态方法:在类中定义的普通方法,需要写语法糖“@staticmethod”既不指向类,
也不指向对象,仅仅是依附于类。
八、如何调用
对象方法只能是对象来调用。
类方法既可以使用类调用,也可以用对像调用。
静态方法既可以使用类调用,也可以用对像调用。
‘’‘定义一个三角形类’‘’
class Triangle:
def init(self, a, b, c):
self.a = a
self.b = b
self.c = c
if self.a + self.b > self.c and self.a + self.c > self.b and self.b + self.c > self.a:
pass
else:
return None
@classmethod
def isTriangle(cls, a, b, c):if a + b > c and a + c > b and b + c > a:return Trueelse:return Falsedef permeter(self):return self.a + self.b + self.cdef area(self):per = self.a + self.b + self.creturn (per / 2 * (per / 2 - self.a) * (per / 2 - self.b) * (per / 2 - self.c)) ** 0.5
a = 3
b = 4
c = 5
tri = Triangle(3,4,5)
if Triangle(a, b, c):
t1 = Triangle(a, b, c)
else:
print(‘这三条边不能组成三角形’)
print(tri.permeter(),tri.area())
一、魔法方法是python定义的一系列由双下划线+方法名组成的特殊方法。
魔法方法不需要调用,会在适合的阶段自动被触发,如果手动调用魔法方法,可以对魔法方法的功能进行调用。
二、常见的魔法方法
init:初始化对象属性;
del:python内存回收机制(ARC),python可以自动的在一个对象被销毁后,自动回收内存。
str:将其它数据类型转换为字符串:a.%s、str()等被调用时会自动触发本方法。
repr:是“str”的备胎
add:加法
sub: 减法
truediv: 除法
floordiv: 整除
mod: 取余数
class Student:
def init(self, name, age):
self.name = name
self.age = age
def __repr__(self):return f'这是{self.age}岁的{self.name}'
stu = Student(‘郭嘉’, 22)
print(stu)
一、继承:在python中,是为了最大程度较少代码量,被继承的类叫父类、
超类,继承的类叫子类、衍生类等;子类能够继承父类的属性和方法。
一个子类可以继承多个类,也可以间接继承。
实例:隔壁老王是煎饼果子名人,有一天干不动了,又不想让秘籍失传;
所以将秘籍传给了大儿子王二麻子。
class Father:
def init(self,name = ‘隔壁老王’,kungfu = ‘《煎饼果子宝典》’):
self.name = name
self.kungfu = kungfu
def cook(self):return f'{self.name}能够根据{self.kungfu}做出美味的煎饼果子'
F1 = Father()
print(F1.cook())
继承语法结构:类名后面添加小括号,小括号中写被继承的父类的类名,
把要修改的元素重新传参
class Son(Father):
# 子类虽然继承了父类,但是子类还可以拥有自己的方法
# 王二麻子还想去学校学习新式的煎饼果子
# 子类还可以拥有自己的属性,子类一旦拥有了自己的属性后,
# 将不再自动继承父类属性,需要添加“super().init()”方法
# 让他再次继承父类属性,也可以写成“Father.init()”
def init(self,age):
super(Son,self).init() # 子类的超类初始化属性
# Father.init()
self.age = age
def newCook(self,book):
return f’{self.name}学成归来,能够根据{book}制作出更美味的新式煎饼果子’
def cook(self):return f'{self.name}根据《煎饼果子宝典》和《新式煎饼果子秘籍》改良出了更好吃的煎饼果子。'
# 子类重写父类方法后还想再使用父类的方法
def oldCook(self):return super(Son,self).cook()
s1 = Son(30)
s1.name = ‘王二麻子’
print(s1.cook())
print(s1.newCook(‘《新式煎饼果子秘籍》’))
print(s1.oldCook())
魔法方法:mro:使用后可以看到子类的继承顺序,python中所有的类都有一个顶级的类“object”
print(Son.mro)
12 第十二节课笔记(面向对象编程)相关推荐
- [Java入门笔记] 面向对象编程基础(二):方法详解
2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...
- JavaScript学习笔记---面向对象编程-JS高级部分(pink老师)
目录 一.面向对象编程介绍 1.1 两大编程思想 1.面向过程编程POP(Process-Oriented Programming) 2.面向对象编程OOP(Object Oriented Progr ...
- Golang笔记-面向对象编程-多态/类型断言
面向对象编程-多态 基本介绍 变量(实例)具有多种形态.面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的.可 以按照统一的接口来调用不同的实现.这时接口变量就呈现不同的形态. 快速入门 ...
- Golang笔记—面向对象编程
工厂模式 说明 Golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题. 看一个需求 一个结构体的声明是这样的: package model type Student struct { ...
- Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用
文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...
- 第2课第3节_Java面向对象编程_继承性_P【学习笔记】
摘要:韦东山android视频学习笔记 面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...
- python基础学习笔记12:Python面向对象编程
面向对象编程思想 1.什么是面向过程 传统的面向过程的编程思想总结起来就八个字--自顶向下,逐步细化! 将要实现的功能描述为一个从开始到结束按部就班的连续的"步骤" 依次逐步完成这 ...
- 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...
- Python零基础入门(四)——Python面向对象编程[学习笔记]
一.定义 1.面向对象编程(OOP) 面向对象编程(Object-oriented Programming,简称OOP)是一种编程范例,它提供了一种结构化程序的方法,以便将属性和行为捆绑到单个对象中. ...
最新文章
- Java零基础学习难吗
- dynamic.rnn()sequence_len理解
- vim java 注释_centOS7 下的vim java补全
- 基于nginx环境部署nagios
- C# 中的可变参数方法(VarArgs)
- 素数类型C语言题目总结
- python class类的self_Python类class参数self原理解析
- springboot之idea不合并空包
- linux临时网络配置
- 最新数据库排行出炉,SQL Server 暴跌。。
- tcpdump 的TCP输出结果详解
- 土方计算软件FastTFT V15.1.0更新说明(支持AutoCAD2020平台)
- vue 怎么修改 confirm 的文字样式和颜色
- cmdb python 采集虚拟机_CMDB学习之八,完成所有资产采集信息的收集
- key组合按键,长短按键,连续按键 识别方案
- IE浏览器提示安全证书过期怎么办
- Android如何避免抓包
- Mybatisplus argument type mismatch
- SpringBoot集成支付平台
- XSS(Reflected)