`
Ydoing
  • 浏览: 106222 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python面向对象详解(上)

 
阅读更多

创建类

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
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    python面向对象

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和...在视频课程“Python面向对象精彩讲解”中,会详细阐述这些概念,并通过实例演示如何在实际开发中应用它们。

    Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象。分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态); 属性一般是一个个变量;方法是一个个函数; #类的属性 就是 类变量 #...

    Python面向对象编程详解及其实战应用

    本文从面向对象的基本概念出发,详细介绍了类与对象的基础定义与使用、属性与方法的作用与管理机制、以及Python中的构造与析构函数等。并通过实例讲解了特殊方法如__init__, __del__, __str__, __repr__, __eq__, __...

    python面向对象 自己手写的

    ### Python面向对象编程详解 #### 一、创建类和对象 面向对象编程(Object-Oriented Programming, OOP)是一种程序设计思想,它把对象作为程序的基本单元,一个对象包含了数据和对这些数据的操作方法。在Python中,...

    python 开发技术详解

    Python的面向对象特性也是学习的重点,包括类的定义、对象的创建、继承、封装和多态性。 本书将详细讲解Python的内置函数和标准库,例如文件操作、异常处理、正则表达式、时间日期处理、系统操作等。这些工具是...

    Python开发技术详解

    包括 python的安装和环境配置、python的基本语法、模块和函数、内置数据结构、字符串和文件的处理、正则表达式的使用、异常的捕获和处理、面向对象的语言特性和设计、python的数据库编程、wxpython库的使用、html...

    Python基础语法详解及面向对象编程介绍

    内容概要:本文档详细介绍了 Python 基础语法和面向对象编程的概念,覆盖了许多关键概念和技术细节,包括但不限于 pip 安装、Python 内置函数与常用语法(如列表解析、装饰器、闭包、生成器等)、作用域、类的创建与...

    《python开发技术详解》.(周伟,宗杰).[PDF]&ckook;

    《Python开发技术详解》中会介绍面向对象的基本概念,包括类、对象、继承、多态和封装等,并且会通过实际案例展示如何在Python中运用面向对象的方法解决问题。掌握面向对象编程对于编写可维护和可扩展的Python程序至...

    Python面向对象封装操作案例详解 II

    本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下: 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 ...

    第五章python面向对象基础详解

    第五章python面向对象基础详解一.理解面向对象二、类和对象三、添加和获取对象属性四、魔法方法五、继承 一.理解面向对象 面向对象就是将编程当成一个事物,对外界来说,事物是直接使用的,不用去管内部情况。编程...

    Python技术面向对象编程详解.docx

    面向对象编程是Python的核心特性之一,它通过模拟现实世界的实体和关系来构建代码结构。本文主要探讨了Python中面向对象编程的基本概念、特点以及如何在实际应用中进行类和对象的创建。 首先,面向对象编程(OOP)...

    Python开发技术详解源代码(附高清PDF)

    Python是一种高级、解释型、交互式和面向对象的脚本语言,因其简洁、易读的语法而被广泛应用于网络爬虫、数据分析、机器学习、Web开发等多个领域。本资源为"Python开发技术详解源代码(附高清PDF)",包含了丰富的...

    python面向对象详解

    面向对象编程是Python编程语言的核心特性之一,它允许开发者通过模拟现实世界中的对象来构建复杂的程序。面向对象编程(OOP)主要包含三个基本概念:类(Class)、对象(Object)和实例(Instance)。 **类(Class...

Global site tag (gtag.js) - Google Analytics