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 相关文章推荐
python获取图片颜色信息的方法
Mar 18 Python
Python中使用hashlib模块处理算法的教程
Apr 28 Python
用Python编写web API的教程
Apr 30 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Python中zip()函数的简单用法举例
Sep 02 Python
python tkinter基本属性详解
Sep 16 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
python如何编写win程序
Jun 08 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
php一个找二层目录的小东东
2012/08/02 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
Node.js模块加载详解
2014/08/16 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
面包屑导航详解
2017/12/07 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
JS防抖和节流实例解析
2019/09/24 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
详解Python Socket网络编程
2016/01/05 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
教师研修随笔感言
2014/01/23 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
音乐教育感言
2014/03/05 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
外国人来华邀请函
2015/01/31 职场文书
歌咏比赛口号大全
2015/12/25 职场文书