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抓取网页中的图片示例
Feb 28 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
深入理解Django的中间件middleware
Mar 14 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
在python中bool函数的取值方法
Nov 01 Python
Python版名片管理系统
Nov 30 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
Python列表与元组的异同详解
Jul 02 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python实现身份证实名认证的方法实例
Nov 08 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
Python使用Numpy模块读取文件并绘制图片
May 13 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 自动加载类原理与用法实例分析
2020/04/14 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
webpack下实现动态引入文件方法
2018/02/22 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
vue调用语音播放的方法
2019/09/27 Javascript
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python检查ping终端的方法
2019/01/26 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
java程序员面试交流
2012/11/29 面试题
高一英语教学反思
2014/01/22 职场文书
物理力学求职信
2014/02/18 职场文书
法制宣传实施方案
2014/03/13 职场文书
亮化工程实施方案
2014/03/17 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
留学推荐信范文
2014/05/10 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers