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基于Tkinter库实现简单文本编辑器实例
May 05 Python
python中字符串前面加r的作用
Jun 04 Python
python冒泡排序简单实现方法
Jul 09 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Atom的python插件和常用插件说明
Jul 08 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
python Django的web开发实例(入门)
Jul 31 Python
Python的条件锁与事件共享详解
Sep 12 Python
对Tensorflow中Device实例的生成和管理详解
Feb 04 Python
pandas提升计算效率的一些方法汇总
May 30 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输出1000以内质数(素数)示例
2014/02/16 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
Python格式化css文件的方法
2015/03/10 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
flask-restful使用总结
2018/12/04 Python
python tornado修改log输出方式
2019/11/18 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
酒吧副总经理岗位职责
2013/12/10 职场文书
秘书英文求职信
2014/04/16 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
安全负责人任命书
2014/06/06 职场文书
python实现简单倒计时功能
2021/04/21 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server