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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Python实现读取文件最后n行的方法
Feb 23 Python
Python编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
基于DataFrame改变列类型的方法
Jul 25 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
Python reversed反转序列并生成可迭代对象
Oct 22 Python
浅谈python中的多态
Jun 15 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php下使用无限生命期Session的方法
2007/03/16 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php生成圆角图片的方法
2015/04/07 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
python numpy格式化打印的实例
2018/05/14 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
C语言编程题
2015/03/09 面试题
ktv收银员岗位职责
2013/12/16 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
国防教育标语
2014/10/08 职场文书
幼儿园辞职书
2015/02/26 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书