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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
python黑魔法之参数传递
Feb 12 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Python检测数据类型的方法总结
May 20 Python
python修改文件内容的3种方法详解
Nov 15 Python
wxPython实现文本框基础组件
Nov 18 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
Python grequests模块使用场景及代码实例
Aug 10 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
thinkphp学习笔记之多表查询
2014/07/28 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript事件列表解说
2006/12/22 Javascript
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python实现字典的key和values的交换
2015/08/04 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
就业推荐表院系意见
2015/06/05 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
Python字符串常规操作小结
2022/04/03 Python