主要参考资料:
RUNOOB.COM Python3 面向对象
之前没有仔细看过python的面向对象编程,因为Linked List中用到了定义新的类,所以简单看了一下教程。
因为之前学过了C/C++ 所以只是简单的记录了一下之前不知道/忘了的点。
笔记和代码主要摘录自RUNOOB.COM的教程
目录:

  1. self
  2. 私有属性
  3. 继承
  4. 方法重写
  5. 类的专用方法
  6. 运算符重写

1. self

终于知道了刷题中函数第一个变量self是什么意思,它代表类实例,而非类。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

class Test:def prt(self):print(self)print(self.__class__)t = Test()
t.prt()

以上实例执行结果为:

<__main__.Test instance at 0x100771878>
__main__.Test

从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的。

2. 定义私有属性

属性命名时开头两个下划线,如__weight = 0

3.继承

多了一个圆括号,里面是父类,如class DerivedClassName(BaseClassName1)。也存在多继承,如class DerivedClassName(Base1, Base2, Base3)。
例:

#!/usr/bin/python3#类定义
class people:#定义基本属性name = ''age = 0#定义私有属性,私有属性在类外部无法直接进行访问__weight = 0#定义构造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" %(self.name,self.age))#单继承示例
class student(people):grade = ''def __init__(self,n,a,w,g):#调用父类的构函people.__init__(self,n,a,w)self.grade = g#覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))#另一个类,多重继承之前的准备
class speaker():topic = ''name = ''def __init__(self,n,t):self.name = nself.topic = tdef speak(self):print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))#多重继承
class sample(speaker,student):a =''def __init__(self,n,a,w,g,t):student.__init__(self,n,a,w,g)speaker.__init__(self,n,t)test = sample("Tim",25,80,4,"Python")
test.speak()   #方法名同,默认调用的是在括号中排前地父类的方法

4. 方法重写

直接看栗子就好了:

#!/usr/bin/python3#类定义
class people:#定义基本属性name = ''age = 0#定义私有属性,私有属性在类外部无法直接进行访问__weight = 0#定义构造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" %(self.name,self.age))#单继承示例
class student(people):grade = ''def __init__(self,n,a,w,g):#调用父类的构函people.__init__(self,n,a,w)self.grade = g#覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))#另一个类,多重继承之前的准备
class speaker():topic = ''name = ''def __init__(self,n,t):self.name = nself.topic = tdef speak(self):print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))#多重继承
class sample(speaker,student):a =''def __init__(self,n,a,w,g,t):student.__init__(self,n,a,w,g)speaker.__init__(self,n,t)test = sample("Tim",25,80,4,"Python")
test.speak()   #方法名同,默认调用的是在括号中排前地父类的方法

注意:super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

6. 类的专用方法

init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方

7. 运算符重载

#!/usr/bin/python3class Vector:def __init__(self, a, b):self.a = aself.b = bdef __str__(self):return 'Vector (%d, %d)' % (self.a, self.b)def __add__(self,other):return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)

结果

Vector(7,8)

转载于:https://www.cnblogs.com/siriusli/p/10363776.html

[Python3] 面向对象编程相关推荐

  1. Python3 面向对象编程

    好记性不如烂笔头,对之前阅读书籍进行梳理与总结,此文为<Python3面向对象编程>阅读笔记. 文章目录 第一章 面向对象设计 第二章 Python对象 第三章 对象相似时 第四章 异常捕 ...

  2. python3 面向对象编程 下载_Python3(7) Python 面向对象编程

    面向对象与面向过程的比较 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. ...

  3. python3面向对象编程第二版pdf_Python 3 面向对象编程(第2版)

    第1章  面向对象设计 1 面向对象 1 对象和类 3 指定属性和行为 5 数据描述对象 5 行为就是动作 7 隐藏细节并创建公共接口 8 组合 11 继承 13 继承提供抽象 15 多重继承 16 ...

  4. Python3面向对象编程的三大特性 封装、继承、多态

    1.封装 封装:将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需 ...

  5. python3 面向对象编程_Python3基础-面向对象编程

    类的定义与实例化 语法格式如下: classClassName:. . . 类:用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 对象: 通过类定 ...

  6. python3面向对象_Python3面向对象编程

    Python3面向对象编程 编辑 锁定 讨论 上传视频 <Python3面向对象编程>是2015年6月电子工业出版社出版的图书,作者是肖鹏,常贺,石琳. 书    名 Python3面向对 ...

  7. 视频教程-彻底掌握Python面向对象编程-Python

    彻底掌握Python面向对象编程 曾就职于猎豹移动,从业已有8年,资深技术专家,现致力于线上教育 陈政强 ¥39.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP ...

  8. python对象编程例子-Python3.5面向对象编程图文与实例详解

    本文实例讲述了Python3.5面向对象编程.分享给大家供大家参考,具体如下: 1.面向过程与面向对象的比较 (1)面向过程编程(procedural programming) 面向过程编程又被称为: ...

  9. python编程实例详解-Python3.5面向对象编程图文与实例详解

    本文实例讲述了Python3.5面向对象编程.分享给大家供大家参考,具体如下: 1.面向过程与面向对象的比较 (1)面向过程编程(procedural programming) 面向过程编程又被称为: ...

  10. [转载] Python3基础:08_02_面向对象编程(OOP)——类和对象

    参考链接: Python中的面向对象编程OOP | 3(继承,对象示例,issubclass和super) 0.前言   这篇博文将讲述Python面向对象开发中的类与对象的概念,包括对类和对象的理解 ...

最新文章

  1. Oracle技术之和分区表相关的一点总结(三)
  2. 很抱歉,这场大会我们没法卖票给你了
  3. Nginx压缩输出配置
  4. diskgeniusv4.4.0_Visual Basic6.0
  5. (四)Kinect人脸识别
  6. 服务器控件的 ID, ClientID 和 UniqueID 属性
  7. 图形的认识(curve,surface,hypersurface)
  8. oracle 删除老存档,【转】oracle存档日志删除
  9. pip 下载安装时使用清华大学镜像(各种国内源配置)
  10. Visio设置跨线之间不避让
  11. 【FusionCompute】基于FreeNAS部署并使用虚拟存储(五)
  12. 深漂一年,一位程序员的2016年终告白
  13. 2020-11-04 [蓝桥杯2018决赛]阅兵方阵
  14. 橡皮筋框QRubberBand Class
  15. 【JavaScript 教程】第六章 数组11— filter() :过滤数组中的元素
  16. 没有android手机确切内核头文件,绕过模块的版本检查,构建一个内核模块
  17. 求素数/质数 简单Java算法
  18. 数值计算(五)——函数逼近一致逼近多项式(1)
  19. 华为免费培养2000名大数据开发者!
  20. 【UE4】搭建局域网内VR直播 UE4.27

热门文章

  1. Java8 的 Stream API 的确牛X,但性能究竟如何呢?
  2. 美团程序员吐槽公司蹲位:如厕5分钟找坑两小时
  3. GitHub疯传!北大学霸的LeetCode刷题笔记火了
  4. 大事件归来,爷青回!
  5. 从0开始学习 GitHub 系列之「向GitHub 提交代码」
  6. php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
  7. WPF快速入门系列(9)——WPF任务管理工具实现
  8. vue的一些基本指令,搭建、编译、运行、打包
  9. HDU2049 不容易系列之(4)考新郎 —— 错排
  10. 对于algorithm102的总结