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 20 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
wxPython之解决闪烁的问题
Jan 15 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
Python代码太长换行的实现
Jul 05 Python
利用Python检测URL状态
Jul 31 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
pytorch锁死在dataloader(训练时卡死)
May 28 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python实现画出e指数函数的图像
2019/11/21 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
python不同版本的_new_不同点总结
2020/12/09 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
大学校庆邀请函
2014/01/11 职场文书
给老师的检讨书
2014/02/11 职场文书
个人简历自荐信
2014/06/26 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
党员个人年度总结
2015/02/14 职场文书
驻村工作简报
2015/07/20 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
Python保存并浏览用户的历史记录
2022/04/29 Python