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中的两个内置模块介绍
Apr 05 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
python框架django基础指南
Sep 08 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python实现图书管理系统
Mar 12 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
python迭代器常见用法实例分析
Nov 22 Python
python利用线程实现多任务
Sep 18 Python
python自动化调用百度api解决验证码
Apr 13 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正则走开
2008/03/15 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
zookeeper python接口实例详解
2018/01/18 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python实现发送邮件
2021/03/02 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
军训感想500字
2014/02/20 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
2014年信访工作总结
2014/11/17 职场文书
店铺转让协议书
2014/12/02 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
医院员工辞职信范文
2015/05/12 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
领导视察通讯稿
2015/07/18 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python