面向对象技术简介

名称

说明

类(Class)

类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

方法

类中定义的函数。

类变量

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员

类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量

定义在方法中的变量,只作用于当前实例的类。

继承

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(Dog是一个Animal)。

实例化

创建一个类的实例,类的具体对象。

对象

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

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

类的专有方法

方法说明

__init__

构造函数,在生成对象时调用

__del__

析构函数,释放对象时使用

__repr__

打印,转换

__setitem__

按照索引赋值

__getitem__

按照索引获取值

__len__

获得长度

__cmp__

比较运算

__call__

函数调用

__add__

加运算

__sub__

减运算

__mul__

乘运算

__truediv__

除运算

__mod__

求余运算

__pow__

乘方

典型的类示例

class People:name = ''__age = 0def __init__(self, n, a):self.name = nself.__age = adef speak(self):print("%s say: I am %d years old." %(self.name,self.__age))p = People('shenzhen', 38)
p.speak()

其中, People为类名,p为类的实例,name为类变量,__age为私有实例变量,__init__(self, n, a)为构造函数,speak为类内普通函数。

示例代码运行结果:

类的继承

继承是类的最重要的一个特性,类的继承语法如下:

class DerivedClassName(BaseClassName1):<statement-1>...<statement-N>

继承示例代码如下:

class People:name = ''age = 0def __init__(self, n, a):self.name = nself.age = adef speak(self):print("%s say: I am %d years old." %(self.name,self.age))class Student(People):grade = ""def __init__(self,n,a,g):People.__init__(self,n,a)self.grade = gdef speak(self):print("%s say: I am %d years old, and I am in %d grade"%(self.name, self.age, self.grade))p = People('shenzhen', 38)
p.speak()
s = Student('xiaoming', 10, 3)
s.speak()

在例子中Peple类为基类,Student类为继承Peple的子类,在Student类中的构造函数中调用了父类的构造函数,并且子类重写了父类的方法speak。

示例运行结果如下:

多重继承

一个类可以继承多个类,这叫多重继承,多重继承的语法如下:

class DerivedClassName(Base1, Base2, Base3):<statement-1>...<statement-N>

多重继承示例代码:

class People:name = ''age = 0def __init__(self, n, a):self.name = nself.age = adef speak(self):print("%s say: I am %d years old." %(self.name,self.age))class Student(People):grade = ""def __init__(self,n,a,g):People.__init__(self,n,a)self.grade = gdef speak(self):print("%s say: I am %d years old, and I am in %d grade"%(self.name, self.age, self.grade))class Speaker():topic = ""name = ""def __init__(self, n, t):self.name = nself.topic = tdef speak(self):print("I am %s, I am a speaker, my topic is %s"%(self.name,self.topic))class Sample(Speaker, Student):a =''def __init__(self,n,a,g,t):Student.__init__(self,n,a,g)Speaker.__init__(self,n,t)p = People('shenzhen', 38)
p.speak()
s = Student('xiaoming', 10, 3)
s.speak()
sp = Speaker('Jack', 'Python Programming')
sp.speak()
test = Sample("Tim",25,4,"Python3 Programming")
test.speak()

在上例中,Sample类继承了Student和Speaker类,然后调用了父类的speak方法,因为两个父类都有这个方法,默认调用的是在括号中自左到右排在前面的父类的方法。

示例运行结果如下:

如果你喜欢这篇文章,别忘了点赞和评论哦!

Python基本语法之面向对象相关推荐

  1. python继承语法_python语法学习面向对象之继承

    python语法学习面向对象之继承 只要涉及到面向对象,"类"是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念 ...

  2. python是一种面向对象、直译式的脚本编程语言_什么是python编程语言

    编程语言是一组用来定义计算机程序的语法规则:它是一种被标准化的交流技巧,用来向计算机发出指令.Python就是一种编程语言,一种面向对象的动态类型语言.一种用处广泛的解释型脚本语言.下面简单介绍一下p ...

  3. python编程语法大全-python语法汇总

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. splitstriplen()for variable in range ...

  4. python基础语法有哪些-Python基础语法知识有哪些?

    相信大家都听过Python除了不会生孩子,基本上无所不能的段子,这一定程度上反映了目前Python编程语言的火爆程度和广泛应用.然而,对于许多零基础的Python学习者来说,常常会遇到无从学起,找不到 ...

  5. python基础语法合集-Python基础语法合集.zip

    [实例简介]精心整理的Python基础语法合集,变量,循环,输入输出等等都有,主要是知道概念和怎么用的 如果打开文件后有文字变成符号的,先把字体改为宋体就正常了 [实例截图] [核心代码] 目录 了解 ...

  6. python基础指令-python基础语法,python 代码命令大全

    python: 1.语法强制缩进 2.区分大小写:iLoop与iloop是两个变量 3.变量无需申明,但是变量赋值前无法使用:a=3合法,b=a+3合法,b=a+c不合法,因为c未赋值前不能使用 4. ...

  7. eclipse python_【Python基础】Python基础语法

    编程与Python 1.什么是编程 人为安排计算机解决某个问题的方法和步骤. 2.编程的语言 机器语言:二进制代码表示的计算机能够直接识别和执行的一种机器指令的集合ADD代表运算符号"+&q ...

  8. 【Python基础】Python基础语法14个知识点大串讲

    作者:来自读者投稿 来源:Python数据之道 Python基础语法大串讲 Python 是一门面向对象的编程语言,相信这篇文章对于初学者而言应该会有一个比较大的帮助,下面我们将 Python 中常用 ...

  9. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

最新文章

  1. 数据库期末复习样卷,临时抱佛脚高分通过考试
  2. Android模拟器快捷键
  3. The restricted headers are:
  4. KSQL和Flink SQL的比较
  5. 2013年1月第4个周末
  6. 【NLP】毕设学习笔记(七)前馈神经网络代表者——卷积神经网络无公式理解
  7. gramer法则matlab,线性代数-matlab实验报告.doc
  8. PyTricks 翻译:Python 字典的 get() 方法和它的默认参数
  9. 微信开发者工具安装教程
  10. HTML5项目实战之旅行社网站——PC端固定布局
  11. 软考软件设计师中级考试大纲(附题型举例)
  12. 顺式作用元件-增强子、终止子、沉默子、绝缘子
  13. 谷歌 Chrome 浏览器 隐藏标题 缩小标签页
  14. Verilog中$finish和$stop的区别
  15. 2021.2冬入京都大学修士考试复习经验贴
  16. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
  17. 一般处理程序可以类似路由的_网络核心动作路由处理程序和方法
  18. pandas 根据筛选条件对指定excel列进行筛选
  19. AutoCAD.NET API2018二次开发第二十章
  20. python中clear和clear()

热门文章

  1. 套口机跳针修理带图_套口机跳针怎么修
  2. 5款AI应用让你全面感受人工智能的魅力
  3. FFmpeg学习(7)—— 给视频添加背景音乐
  4. var 和 let的区别_let 和 var的区别
  5. Java静态方法调用内部类
  6. 让美眉甜到心里去的幽默情话
  7. LATEX图片(子图)排版
  8. rhel6.5集群管理
  9. “矩阵打法”成共识,谁的陷阱,谁的机会?
  10. tensorflow学习--sess.run()