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 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
Python实现的检测网站挂马程序
Nov 30 Python
python中的turtle库函数简单使用教程
Jul 23 Python
python事件驱动event实现详解
Nov 21 Python
python命令 -u参数用法解析
Oct 24 Python
Python OrderedDict的使用案例解析
Oct 25 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
python单元测试框架pytest的使用示例
Oct 07 Python
用python制作个音乐下载器
Jan 30 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
可以支持多中格式的JS键盘
2007/05/02 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
初识Javascript小结
2015/07/16 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python实现简单俄罗斯方块
2020/03/13 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
python raise的基本使用
2020/09/10 Python
python线程优先级队列知识点总结
2021/02/28 Python
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
八年级生物教学反思
2014/01/22 职场文书
工程采购员岗位职责
2014/03/09 职场文书
投标担保书范文
2014/04/02 职场文书
普宁寺导游词
2015/02/04 职场文书
保护环境的宣传语
2015/07/13 职场文书
小学感恩主题班会
2015/08/12 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis