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实现在windows服务中新建进程的方法
Jun 30 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
详解python-图像处理(映射变换)
Mar 22 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
python爬虫添加请求头代码实例
Dec 28 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
opencv 图像加法与图像融合的实现代码
Jul 08 Python
python 爬虫之selenium可视化爬虫的实现
Dec 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
php中mkdir函数用法实例分析
2014/11/15 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
PHP目录操作实例总结
2016/09/27 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
PHP7变量处理机制修改
2021/03/09 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
Vue异步加载about组件
2017/10/31 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python合并字符串的3种方法
2015/05/21 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
css3 transform属性详解
2014/09/30 HTML / CSS
银行实习生自我鉴定范文
2013/09/19 职场文书
教师节宣传方案
2014/05/23 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
pytorch 如何使用float64训练
2021/05/24 Python
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python