Python中类的定义、继承及使用对象实例详解


Posted in Python onApril 30, 2015

本文实例讲述了Python中类的定义、继承及使用对象的方法。分享给大家供大家参考。具体分析如下:

Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。具体的形式如下:

例:类的概念:

class 人类:
             名字 = '未命名' # 成员变量
 def 说话(内容): # 成员函数
                print 内容 # 成员变量赋初始值
某人 = 人类() # 定义一个人类对象某人
某人.名字 = "路人甲"
某人.说话 ('大家好') # 路人甲说话
>>> 大家好! # 输出

示例程序一(类的定义):

>>> class pp:
...   pass
...
>>> p = pp()
>>> print p
<__main__.pp instance at 0x00CA77B0>
>>>

打印了这个变量的类型。它告诉我们我们已经在__main__模块中有了一个Person类的实例。

示例程序二(__init__用法):

说明:__init__方法在类的对象被建立时,马上运行。该方法用来对对象进行初始化。

>>> class Person:
...   def __init__(self, name):
...       self.name = name
...   def sayHi(self):
...       print 'Hello, my name is', self.name
...
>>> p = Person('Swaroop')
>>> p.sayHi()
Hello, my name is Swaroop
>>>

示例程序三(__del__方法):

说明:__del__方法是在程序退出时调用的。

>>> class Person:
...   population = 0
...   def __init__(self, name):
...       self.name = name
...       print '(Initializing %s)' % self.name
...   def __del__(self):
...       print '%s says bye.' % self.name
...       Person.population -= 1
...
...   def howMany(self):
...       if Person.population == 1:
...           print 'I am the only person here.'
...       else:
...           print 'We have %d persons here.' % Person.population
...
>>> A = Person('aa')
(Initializing aa)
>>> A.howMany()
We have 0 persons here.
>>> B = Person('bb')
(Initializing bb)
>>> B.howMany()
We have 0 persons here.
>>> ^Z
aa says bye.
bb says bye.

Python中定义和使用类的形式为:class 类名[(父类名)]:[成员函数及成员变量],类名为这个类的名称,而父类名为可选,但定义父类名后,子类则拥有父类的相应属性和方法。在用类定义成对象时,会先调用__init__构造函数,以初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针就好了。而在对象销毁时,则会调用__del__析构函数,定义类的成员函数时,必须默认一个变量(类似于C++中的this指针)代表类定义的对象本身,这个变量的名称可自行定义,下面例子将使用self变量表示类对象变量。

例:类定义及使用:

class CAnimal: 
       name = 'unname'
       # 成员变量 
  def __init__(self,voice='hello'):
  # 重载构造函数 
     self.voice = voice
     # 创建成员变量并赋初始值 
  def __del__(self):
  # 重载析构函数 
     pass # 空操作 
  def Say(self): 
      print self.voice 
t = CAnimal() # 定义动物对象t 
t.Say() # t说话 
>> hello # 输出 
dog = CAnimal('wow') # 定义动物对象dog 
dog.Say() # dog说话 
>> wow # 输出

Python编程中类可以承继父类属性,形式为class 类名(父类),子类可以继承父类的所有方法和属性,也可以重载父类的成员函数及属性,须注意的是子类成员函数若重载父类(即名字相同),则会使用子类成员函数

例:类的继承

class CAnimal: 
    def __init__(self,voice='hello'):
    # voice初始化默认为hello 
       self.voice = voice 
    def Say(self): 
      print self.voice 
 def Run(self): 
      pass # 空操作语句(不做任何操作) 
class CDog(CAnimal): # 继承类CAnimal 
  def SetVoice(self,voice): # 子类增加函数
     SetVoice self.voice = voice 
    def Run(self,voice): # 子类重载函数Run      
      print 'Running' 
bobo = CDog() 
bobo.SetVoice('My Name is BoBo!')
# 设置child.data为hello 
bobo.Say() 
bobo.Run() 
>> My Name is BoBo! 
>> Running

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

Python 相关文章推荐
python局部赋值的规则
Mar 07 Python
Python map和reduce函数用法示例
Feb 26 Python
用Python进行行为驱动开发的入门教程
Apr 23 Python
python获取list下标及其值的简单方法
Sep 12 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
python中global用法实例分析
Apr 30 #Python
python中as用法实例分析
Apr 30 #Python
python中pass语句用法实例分析
Apr 30 #Python
python中assert用法实例分析
Apr 30 #Python
python实现同时给多个变量赋值的方法
Apr 30 #Python
python实现指定字符串补全空格的方法
Apr 30 #Python
python遍历数组的方法小结
Apr 30 #Python
You might like
第十二节--类的自动加载
2006/11/16 PHP
php获取某个目录大小的代码
2008/09/10 PHP
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
深入理解ES7的async/await的用法
2017/09/09 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
Python 第一步 hello world
2009/09/25 Python
Python中的filter()函数的用法
2015/04/27 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python中import与from方法总结(推荐)
2019/03/21 Python
详解python配置虚拟环境
2019/04/08 Python
人工神经网络算法知识点总结
2019/06/11 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
电子商务专业个人的自我评价
2013/12/19 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
springboot用户数据修改的详细实现
2022/04/06 Java/Android