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使用xlrd读取Excel格式文件的方法
Mar 10 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
详解在Python中处理异常的教程
May 24 Python
详谈python http长连接客户端
Jun 12 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
基于python实现操作redis及消息队列
Aug 27 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可逆加密函数(分享)
2013/06/06 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
js验证身份证号码记录的方法
2019/04/26 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Python之os操作方法(详解)
2017/06/15 Python
详解Python中is和==的区别
2019/03/21 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python如何将图片转换素描画
2020/09/08 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
物流业务员岗位职责
2014/02/08 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL