Python面向对象class类属性及子类用法分析


Posted in Python onFebruary 02, 2018

本文实例讲述了Python面向对象class类属性及子类用法。分享给大家供大家参考,具体如下:

class类属性

class Foo(object):
  x=1.5
foo=Foo()
print foo.x#通过实例访问类属性
>>>1.5
print Foo.x #通过类访问类属性
>>>1.5
foo.x=1.7  #只改新实例属性,不会改变类属性
print foo.x
>>>1.7
print Foo.x
>>>1.5
foo.x+=0.2 ##只改新实例属性,不会改变类属性
print foo.x
>>>1.9
print Foo.x
>>>1.5
del foo.x ##删除更新的实例属性,默认变为类的属性
print foo.x
>>>1.5
print Foo.x
>>>1.5

class子类

父类:

class AddrBookEntry(object):
  "address book entry class"
  def __init__(self, nm, ph):
    self.name = nm
    self.phone = ph
    print "created instance for:", self.name
  def updatePhone(self, newph):
    self.phone = newph
    print "updated phone# for:", self.name

子类:

当一个类被派生出来,子类就继承了基类的属性。所以EmplAddrBookEntry继承了AddrBookEntry的updatePhone的方法。子类最好自定义自己的构造器,不然基类的构造器会被调用。如果子类重写了基类的构造器,基类的构造器就不会自动调用,除非被显示声明出来。

class EmplAddrBookEntry(AddrBookEntry):
  "employee address book entry class"
  def __init__(self, nm, ph, id, em):##重写基类构造器
    AddrBookEntry.__init__(self, nm, ph)
    self.empid = id
    self.email = em
  def updateEmail(self, newem):
    self.email = newem
    print "updated e-mail address for:", self.name

使用子类:

john = EmplAddrBookEntry("john doe","408-555-1212", 42, "john@spam.doe")
created instance for: john doe
>>> john
<__main__.EmplAddrBookEntry object at 0x02115FD0>
>>> john.name
'john doe'
>>> john.phone
'408-555-1212'
>>> john.email
'john@spam.doe'
>>> john.updatePhone("415-555-1212")
updated phone# for: john doe
>>> john.phone
'415-555-1212'
>>> john.updateEmail("john@doe.spam")
updated e-mail address for: john doe
>>> john.email
'john@doe.spam'

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

Python 相关文章推荐
python列出目录下指定文件与子目录的方法
Jul 03 Python
深入浅析python定时杀进程
Jun 06 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
一看就懂得Python的math模块
Oct 21 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
python如何查看安装了的模块
Jun 23 Python
PyQt5的相对布局管理的实现
Aug 07 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 #Python
Python星号*与**用法分析
Feb 02 #Python
Python模块WSGI使用详解
Feb 02 #Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 #Python
tensorflow中next_batch的具体使用
Feb 02 #Python
Python输出各行命令详解
Feb 01 #Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 #Python
You might like
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
javawscript 三级菜单的实现原理
2009/07/01 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python 文件与目录操作
2008/12/24 Python
python paramiko模块学习分享
2017/08/23 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
对Python中range()函数和list的比较
2018/04/19 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
保证书格式
2015/01/16 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript