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 相关文章推荐
Python使用代理抓取网站图片(多线程)
Mar 14 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
Python构建XML树结构的方法示例
Jun 30 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
python实现换位加密算法的示例
Oct 14 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
Python安装使用Scrapy框架
Apr 12 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
JS input 数字验证代码
2009/07/30 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
分析Python中解析构建数据知识
2018/01/20 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
python numpy 反转 reverse示例
2019/12/04 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
个人贷款担保书
2014/04/01 职场文书
财务会计专业求职信
2014/06/09 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
受资助学生感谢信
2015/01/21 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
保留意见审计报告
2015/06/05 职场文书
七年级数学教学反思
2016/02/17 职场文书
MySQL基础(一)
2021/04/05 MySQL
Java实现多文件上传功能
2021/06/30 Java/Android
yolov5返回坐标的方法实例
2022/03/17 Python
vue自定义右键菜单之全局实现
2022/04/09 Vue.js