Python的面向对象思想分析


Posted in Python onJanuary 14, 2015

本文实例讲述了Python的面向对象思想。分享给大家供大家参考。具体分析如下:

面向对象的基本思想是封装,继承,多态。

首先是继承:

定义一个类:

class Bird(object):  

    have_feather = True  

    way_of_reproduction  = 'egg'

调用这个类:

summer = Bird()  

print summer.way_of_reproduction

与Java不同是,Python是不需要new来实例化类的。

同样,Python的类下面是可以定方法的:

class Bird(object):      

    have_feather = True      

    way_of_reproduction = 'egg'      

      

    def say(self, word='hi hi'):  

              print 'i say :' + word

注意一点,所有类的函数,必须至少带有一个参数,这个参数必须是self。

类以外的函数没有这一个限制。

chk = Chicken()  

print chk.have_feather  

print chk.sat('hello')

__init__()方法

__init__()是一个特殊方法(special method)。Python里会有一些特殊方法,Python会以特别的方式处理它们。特殊方法的名字的特点是前后都有两个下划线。

__init__()方法的特殊在于,如果你在类中定义了这个方法,一旦你根据这个类建立对象,Python就会自动调用这个方法(这个过程也叫初始化)。

如:

class happyBird(Bird):  

    def __init__(self,more_words):  

        print 'We are happy birds.',more_words  

  

hb = happyBird('Happy,Happy!')

父类方法的重载:

class Hello(object):  

    name = 'hello'  

      

    def __init__(self):  

        self.name='my name is hello'  

      

    #类中的参数必须带有self参数  

    def sayhi(self):  

        print 'hi you'  

  

class World(Hello):   

    def __init__(self):  

        #这里访问的是父类初始化的变量名  

        print 'before:',Hello.name   

        super(World,self).__init__()    

        #由于调用了父类的初始化构造函数,继承了父类的变量的改变  

        print 'after:',self.name  

          

        #近似于方法重载  

    def sayhi(self,word='baby'):  

        #调用父类sayhi方法  

        super(World,self).sayhi()  

        print 'hi '+word  

              

    def sayWorld(self):  

        print 'hi,hello world'  

          

if __name__ == '__main__':  

    c = World()  

    c.sayhi()  

    c.sayWorld()

 另外,python是允许多继承的,但是这个是个非常危险的操作,建议不要随便使用。

关于Python的多态,就像JavaScript一样,直接访问对象的属性,不需要使用接口,没有类型转换。

对于类型的判断,有抓们的type()函数,和isinstance()函数判断是否某个函数的子类。

isinstance(object, classinfo)

判断实例是否是这个类或者object是变量 
 
classinfo 是类型(tuple,dict,int,float) 
判断变量是否是这个类型  
class objA:   

pass   

  

A = objA()   

B = 'a','v'   

C = 'a string'   

  

print isinstance(A, objA)   

print isinstance(B, tuple)   

print isinstance(C, basestring)

输出结果:  
True  
True  
True 

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

Python 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
python实现的希尔排序算法实例
Jul 01 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
pywinauto自动化操作记事本
Aug 26 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
基于python实现计算两组数据P值
Jul 10 Python
详解Python中的路径问题
Sep 02 Python
python爬虫 requests-html的使用
Nov 30 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 Python
为python设置socket代理的方法
Jan 14 #Python
Python单例模式实例分析
Jan 14 #Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 #Python
Python中使用Tkinter模块创建GUI程序实例
Jan 14 #Python
更改Python命令行交互提示符的方法
Jan 14 #Python
Python的迭代器和生成器使用实例
Jan 14 #Python
python实现带验证码网站的自动登陆实现代码
Jan 12 #Python
You might like
pw的一个放后门的方法分析
2007/10/08 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python妹子图简单爬虫实例
2015/07/07 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
运动会稿件100字
2014/02/21 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
学习三严三实心得体会
2014/10/13 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
酒店前台岗位职责
2015/04/16 职场文书
承诺书范本大全
2015/05/04 职场文书
办公经费申请报告
2015/05/15 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
Mysql 文件配置解析介绍
2022/05/06 MySQL