Python面向对象程序设计之类的定义与继承简单示例


Posted in Python onMarch 18, 2019

本文实例讲述了Python面向对象程序设计之类的定义与继承。分享给大家供大家参考,具体如下:

定义类:

class A:
  def __init__(self, name):
    self.name = name
  def say(self):
    print self.name
  def __del__(self):
    print "delete: %s" % self.name

1. python类的所有方法定义都必须至少含有一个参数,也就是self参数。在方法定义时作为第一个参数存在,self参数是类实例的引用。
2. __init__方法相当于构造函数,在获取类实例的时候会执行。
3. __del__方法相当于析构函数,会由系统自动调用(类似垃圾回收),也可以通过del对象主动调用。
4. 上例在__init__方法里定义了一个对象的变量name,可以在类内其他地方通过self.name引用。

获取类的实例并调用类方法:

a = A('Jim') #不用new
a.say() #Jim
A.say(a) #Jim

调用类的方法有两种方式:

1. 对象.方法名,此种方式self参数不需要指定,对象引用作为实参自动传入。
2. 类名.方法名,此种方式self参数需要指定为类实例的引用。

类变量和对象变量:

class A:
  pass
a = A()
print A.j #报错,因为A类中不存在类变量j
A.i = 1  #在A类中添加类变量i,并赋值1
print A.i #打印1
print a.i #打印1,这里的a.i实际上取到的是类A的类变量i,非对象a的对象变量i(其尚不存在)
a.j = 2  #在对象a中添加对象变量j,并赋值2
print A.j #报错,因为A类中不存在类变量j
print a.j #打印2
a.i = 3  #在对象a中添加对象变量i,并赋值3
b = A() 
print A.i #打印1,A.i取到的是A类中的类变量i
print a.i #打印3,a.i取到的是a对象中的对象变量i,取不到类A中的类变量i(因为重名优先获取对象变量)
print b.i #打印1,b.i取到的是A类中的类变量i

总结:

1. 对象的变量称为对象的域;类的变量称为类的域(相当于类静态变量)。类的域和方法合称类的属性。(我们没用域,而用了变量这个称呼)。
2. 类和对象的变量可以在类定义后随意添加。
3. 如果我们用 对象.i取用变量(取用而非赋值),会先试图取用对象变量i,若不存在则试图取用对象所属类中的类变量i,若还不存在则报错。
4. 可使用对象引用获取类变量值(在不存在重名的对象变量时),但不能用对象引用给类变量赋值(会创建同名对象变量)。

定义类变量:

在类内直接定义的变量是类变量,不属于某个特定对象,相当于静态变量,如:

class P:
  __pri = "private via"
  count = 1
print P.count #打印1
print P.__pri #报错,类P中没有名称为__pri的属性

1. 使用类变量通常用:类名.变量名
2. 类的属性默认是公有的;类定义中,变量名为双下划线开头的变量是私有的(依靠约定来保证)。

类的继承:

在类定义时,类名称后紧跟一个元组名,此类即为以元组的元素为父类的子类:

class SubClass(SuperClass):
   pass
class SubClass(SuperClass1, SuperClass2):
   pass

1. 若类没有显式的定义__init__方法,则python会自动生成一个__init__(self)方法;且如果这个类有父类,此子类自动生成的__init__(self)方法会依次调用父类的__init__(self)方法,若父类中没有__init__(self)这样的方法,执行就会报错。

2. 若显式定义__init__方法,父类的__init__方法不会自动调用,需要代码显式调用。这和java不同,java会自动在构造方法的第一句加入super()语句。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
从零学Python之入门(三)序列
May 25 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python中使用while循环的实例
Aug 05 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
python math模块的基本使用教程
Jan 16 Python
详解Python如何批量采集京东商品数据流程
Jan 22 Python
Python动态赋值的陷阱知识点总结
Mar 17 #Python
Python将字符串常量转化为变量方法总结
Mar 17 #Python
实例讲解Python中整数的最大值输出
Mar 17 #Python
python3+selenium自动化测试框架详解
Mar 17 #Python
Django 中间键和上下文处理器的使用
Mar 17 #Python
Python时间和字符串转换操作实例分析
Mar 16 #Python
Python中numpy模块常见用法demo实例小结
Mar 16 #Python
You might like
在WIN98下以apache模块方式安装php
2006/10/09 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
php生成静态页面的简单示例
2014/04/17 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python输入错误后删除的方法
2019/10/12 Python
Python模块future用法原理详解
2020/01/20 Python
python怎么提高计算速度
2020/06/11 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书