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 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
python学生管理系统开发
Jan 30 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
Python 如何批量更新已安装的库
May 26 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
numba提升python运行速度的实例方法
Jan 25 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的变量总结 新手推荐
2011/04/18 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
基于python的字节编译详解
2017/09/20 Python
python实现k-means聚类算法
2018/02/23 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
便捷提取python导入包的属性方法
2018/10/15 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
大学生个人事迹材料
2014/01/21 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
公司门卫岗位职责
2014/03/15 职场文书
大学生求职计划书
2014/04/30 职场文书
2014年班主任工作总结
2014/11/08 职场文书
红高粱观后感
2015/06/10 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python
java版 简单三子棋游戏
2022/05/04 Java/Android
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS