Python类定义和类继承详解


Posted in Python onMay 08, 2015

一、类定义:

class <类名>:
  <语句>

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性
如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象
 
类的私有属性:
__private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问
在类内部的方法中使用时 self.__private_attrs
 
 类的方法
在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
 
 
私有的类方法
__private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用
在类的内部调用slef.__private_methods
类的专有方法:
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
 
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方
示例:

#类定义 
class people: 
  #定义基本属性 
  name = '' 
  age = 0 
  #定义私有属性,私有属性在类外部无法直接进行访问 
  __weight = 0 
  #定义构造方法 
  def __init__(self,n,a,w): 
    self.name = n 
    self.age = a 
    self.__weight = w 
  def speak(self): 
    print("%s is speaking: I am %d years old" %(self.name,self.age)) 
 
 
p = people('tom',10,30) 
p.speak()

二、继承类定义:

1.单继承

class <类名>(父类名)
  <语句>
eg.
class childbook(book)
  age = 10

2.类的多重继承

class 类名(父类1,父类2,....,父类n)
   <语句1>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法

#另一个类,多重继承之前的准备 
class speaker(): 
  topic = '' 
  name = '' 
  def __init__(self,n,t): 
    self.name = n 
    self.topic = t 
  def 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,w,g,t): 
    student.__init__(self,n,a,w,g) 
    speaker.__init__(self,n,t) 
 
test = sample("Tim",25,80,4,"Python") 
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

类方法的覆写——子类覆盖掉父类的方法
def 方法名与父类一致
若是在方法中要使用到父类方法 父类名.方法名
 
若是将类放到了模块中
 
使用时

import A
l = A.类()

以上三段程序的执行结果:

Python类定义和类继承详解

Python 相关文章推荐
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
python判断设备是否联网的方法
Jun 29 Python
python如何生成各种随机分布图
Aug 27 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
解决python3输入的坑——input()
Dec 05 Python
python基于tkinter实现gif录屏功能
May 19 Python
如何利用Python实现一个论文降重工具
Jul 09 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 #Python
python通过ftplib登录到ftp服务器的方法
May 08 #Python
python操作sqlite的CRUD实例分析
May 08 #Python
python实现在sqlite动态创建表的方法
May 08 #Python
python查询sqlite数据表的方法
May 08 #Python
python自定义类并使用的方法
May 07 #Python
python简单的函数定义和用法实例
May 07 #Python
You might like
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
python数据化运营的重要意义
2019/11/25 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
优秀士兵先进事迹
2014/02/06 职场文书
施工材料员岗位职责
2014/02/12 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2015年公务员工作总结
2015/04/24 职场文书
美容院员工规章制度
2015/08/05 职场文书
思想工作总结范文
2015/08/12 职场文书
员工给公司的建议书
2019/06/24 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书