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及Django框架生成二维码的方法分析
Jan 31 Python
Python中property属性实例解析
Feb 10 Python
20个常用Python运维库和模块
Feb 12 Python
python中正则表达式的使用方法
Feb 25 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
Python实现FM算法解析
Jun 18 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
详解Django中 render() 函数的使用方法
Apr 22 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
Python中自定义函数的教程
2015/04/27 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Django的CVB实例详解
2020/02/10 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
人民教师求职自荐信
2014/03/12 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
同学聚会通知短信
2015/04/20 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书