Python中的面向对象编程详解(上)


Posted in Python onApril 13, 2015

创建类

Python 类使用 class 关键字来创建。简单的类的声明可以是关键字后紧跟类名:

class ClassName(bases):

    'class documentation string' #'类文档字符串'

    class_suite #类体

实例化

通过类名后跟一对圆括号实例化一个类

mc = MyClass() # instantiate class 初始化类

‘int()'构造器
def __int__(self):

    pass

注意:self类似Java的this关键字作用,它代码指向自身实例的引用

类属性

python的属性与Java和C++等面向对象语言不同,python的属性即包括了数据成员还包括函数元素,通过句点符号来访问.

特殊数据内建属性

C.name 类C的名字(字符串)
C.doc 类C的文档字符串
C.bases 类C的所有父类构成的元组
C.dict 类C的属性
C.module 类C定义所在的模块(1.5 版本新增)
C.class 实例C对应的类(仅新式类中)

特殊方法内建属性

dir():获得类属性或者实例属性名字列表.

静态变量属性

直接在class作用域定义

class C(object):

    foo = 100

实例变量属性

python的实例属性与Java和C++等不同.在Java和C++中,实例属性必须首先声明/定义,而python实例属性是动态创建。设置实例的属性可以在实例创建后任意时间进行,也可以在能够访问实例的代码中进行。构造
器init()是设置这些属性的关键点之一。

    def __init__(self, name, data):

        self.name = name

        self.data = "123'

注意:self类似Java的this关键字作用,它代码指向自身实例的引用

方法属性

分为实例方法和类方法.实例方法只属于一个实例;而类方法即属于类所有,也属于实例所有.

实例方法

class MyClass(object):

    def myNoActionMethod(self):

    pass

注意:self类似Java的this关键字作用,它代码指向自身实例的引用

静态方法

静态方法是类级别的方法,不需要实例化类就可以直接调用.有两种方法定义

●装饰器(常用)

    @staticmethod   

    def foo():

        print 'call static method'

●内建函数
    def foo():

        print 'call static method'

    foo = staticmethod(foo) #静态方法

类方法

静态方法是类级别的方法, 与静态方法不同的是,它必须显示传入cls类参数;而且如果还需要调用类中其他的静态方法,或者类方法的函数, 要定义成类方法. 与静态方法类似,也有两种方法定义.

●装饰器(常用)

    @classmethod    

    def bar(cls):

        print 'call class method and access static varible(staticVar): ', cls.staticVar

●内建函数
def bar(cls):

        print 'call class method and access static varible(staticVar): ', cls.staticVar

    bar = classmethod(bar)  #类方法

实例详解
#!/usr/bin/python

#coding=utf-8
class Target(): #定义类Target

    'This is Target definition' #定义__doc__属性
    staticVar = 'v1.0'  #定义静态变量
    def __init__(self, name = 'default', data = 0): #定义构造函数

        self.name = name    #实例变量

        self.data = data    #实例变量

        print "init instance"
    def main():

        print "this is a test function"
    '''

    可以用装饰器定义静态方法

    @staticmethod   

    def foo():

        print 'call static method'

    '''

    def foo():

        print 'call static method'

    foo = staticmethod(foo) #静态方法
    '''

    可以用装饰器定义类方法

    @classmethod    

    def bar(cls):

        print 'call class method and access static varible(staticVar): ', cls.staticVar

    '''

    def bar(cls):

        print 'call class method and access static varible(staticVar): ', cls.staticVar

    bar = classmethod(bar)  #类方法
    #只有调用本模块的时候main()方法才生效

    if __name__ == '__main__':

        main()
#实例化

target = Target('aaa', 123)

print 'name is: ', target.name

print 'data is: ', target.data
#打印__doc__属性

print 'target.__doc__ is: ', target.__doc__
#打印类__dict__属性

print 'Target.__dict__ is: ', Target.__dict__
#打印静态变量

print 'staticVar is: ', Target.staticVar
#打印内建函数dir()

print 'dir() is: ', dir(Target)
#调用静态方法

Target.foo()
#调用类方法

Target.bar()

输出

this is a test function

init instance

name is:  aaa

data is:  123

target.__doc__ is:  This is Target definition

Target.__dict__ is:  {'__module__': '__main__', 'foo': <staticmethod object at 0x7f3fd9310cc8>, 'bar': <classmethod object at 0x7f3fd9310d38>, 'staticVar': 'v1.0', 'main': <function main at 0x7f3fd930e758>, '__doc__': 'This is Target definition', '__init__': <function __init__ at 0x7f3fd930e6e0>}

staticVar is:  v1.0

dir() is:  ['__doc__', '__init__', '__module__', 'bar', 'foo', 'main', 'staticVar']

call static method

call class method and access static varible(staticVar):  v1.0
Python 相关文章推荐
python实现人人网登录示例分享
Jan 19 Python
Python中设置变量访问权限的方法
Apr 27 Python
Python面向对象类的继承实例详解
Jun 27 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
七个Python必备的GUI库
Apr 27 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 Python
进一步理解Python中的函数编程
Apr 13 #Python
Python中的异常处理简明介绍
Apr 13 #Python
python中的装饰器详解
Apr 13 #Python
Python生成器(Generator)详解
Apr 13 #Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 #Python
在Python中使用SimpleParse模块进行解析的教程
Apr 11 #Python
Python的动态重新封装的教程
Apr 11 #Python
You might like
php文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python入门_浅谈for循环、while循环
2017/05/16 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
Django开发中复选框用法示例
2018/03/20 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
Django 视图层(view)的使用
2018/11/09 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
初中生三年学习生活的自我评价
2013/11/03 职场文书
实习鉴定评语
2014/01/19 职场文书
一年级家长会邀请函
2014/01/25 职场文书
自查自纠整改报告
2014/11/06 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
2015年财政局工作总结
2015/05/21 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
Python如何导出导入所有依赖包详解
2021/06/08 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript