一、面向对象:是一种思维,使用这种思维设计的程序能够将数据和对数据进行的

操作封装在一起组成一个类,可以同多创建对象,通过对象之间的交互来解决问题。

二、面向对象编程(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 第十二节课笔记(面向对象编程)相关推荐

  1. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  2. JavaScript学习笔记---面向对象编程-JS高级部分(pink老师)

    目录 一.面向对象编程介绍 1.1 两大编程思想 1.面向过程编程POP(Process-Oriented Programming) 2.面向对象编程OOP(Object Oriented Progr ...

  3. Golang笔记-面向对象编程-多态/类型断言

    面向对象编程-多态 基本介绍 变量(实例)具有多种形态.面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的.可 以按照统一的接口来调用不同的实现.这时接口变量就呈现不同的形态. 快速入门 ...

  4. Golang笔记—面向对象编程

    工厂模式 说明 Golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题. 看一个需求 一个结构体的声明是这样的: package model type Student struct { ...

  5. Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用

    文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...

  6. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...

  7. python基础学习笔记12:Python面向对象编程

    面向对象编程思想 1.什么是面向过程 传统的面向过程的编程思想总结起来就八个字--自顶向下,逐步细化! 将要实现的功能描述为一个从开始到结束按部就班的连续的"步骤" 依次逐步完成这 ...

  8. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  9. Python零基础入门(四)——Python面向对象编程[学习笔记]

    一.定义 1.面向对象编程(OOP) 面向对象编程(Object-oriented Programming,简称OOP)是一种编程范例,它提供了一种结构化程序的方法,以便将属性和行为捆绑到单个对象中. ...

最新文章

  1. Java零基础学习难吗
  2. dynamic.rnn()sequence_len理解
  3. vim java 注释_centOS7 下的vim java补全
  4. 基于nginx环境部署nagios
  5. C# 中的可变参数方法(VarArgs)
  6. 素数类型C语言题目总结
  7. python class类的self_Python类class参数self原理解析
  8. springboot之idea不合并空包
  9. linux临时网络配置
  10. 最新数据库排行出炉,SQL Server 暴跌。。
  11. tcpdump 的TCP输出结果详解
  12. 土方计算软件FastTFT V15.1.0更新说明(支持AutoCAD2020平台)
  13. vue 怎么修改 confirm 的文字样式和颜色
  14. cmdb python 采集虚拟机_CMDB学习之八,完成所有资产采集信息的收集
  15. key组合按键,长短按键,连续按键 识别方案
  16. IE浏览器提示安全证书过期怎么办
  17. Android如何避免抓包
  18. Mybatisplus argument type mismatch
  19. SpringBoot集成支付平台
  20. XSS(Reflected)

热门文章

  1. C#开发 AutoCAD二次开发 自动创建显示Ribbon界面(带图片),打开AutoCAD自动显示,执行响应程序
  2. 工具:mp4测试文件
  3. 自制WordPress响应式主题-9IPHP 上线了~~
  4. 数字图像的获取(摘记,非原创)
  5. 如何在VB.NET中查询所有打印机端口名称,端口号ne
  6. 从伽利略船舱到光子马拉松-破坏相对论的可能性及其后果
  7. Android 高仿QQ 好友分组列表
  8. 【CozeTalk-手把手】读财报
  9. 解决 Origin 平台安装慢的办法
  10. IDA pro逆向工具寻找socket server的IP和port