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 fileinput模块使用实例
Jun 03 Python
python定时器(Timer)用法简单实例
Jun 04 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python聊天室程序(基础版)
Apr 01 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python取均匀不重复的随机数方式
Nov 27 Python
如何基于python测量代码运行时间
Dec 25 Python
Python猴子补丁知识点总结
Jan 05 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 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 缓冲的免费实现方法
2006/10/09 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
JavaScript中双向数据绑定详解
2017/05/03 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
基于Django的python验证码(实例讲解)
2017/10/23 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
社会实践先进工作者事迹材料
2014/05/06 职场文书
校庆标语集锦
2014/06/25 职场文书
医院党员公开承诺书
2014/08/30 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
作弊检讨书
2015/01/27 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
企业培训简报范文
2015/07/20 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS