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完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
python实现清屏的方法
Apr 30 Python
Python编程中的文件操作攻略
Oct 16 Python
python打开windows应用程序的实例
Jun 28 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
Python把图片转化为pdf代码实例
Jul 28 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
详解Python调用系统命令的六种方法
Jan 28 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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 新手入门教程
2009/08/03 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
python控制台中实现进度条功能
2015/11/10 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python怎么调用自己的函数
2020/07/01 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
员工担保书范本
2015/09/22 职场文书