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用ConfigObj读写配置文件的实现代码
Mar 04 Python
详解Python中time()方法的使用的教程
May 22 Python
Python判断字符串与大小写转换
Jun 08 Python
浅谈Python中的闭包
Jul 08 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
python与字符编码问题
May 24 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
Django admin组件的使用
Oct 24 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
python实现局部图像放大
Nov 17 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP中的cookie
2006/11/26 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
Vue实现购物车功能
2017/04/27 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
Python字符遍历的艺术
2008/09/06 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python实现桌面托盘气泡提示
2019/07/29 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
Python如何对齐字符串
2020/07/30 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
考试不及格检讨书
2014/01/09 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
运动会100米广播稿
2015/08/19 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL