`

python 静态方法与类方法

阅读更多

staticmethod, classmethod 分别被称为静态方法和类方法。 

staticmethod
基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里说光说对象总是容易产生混淆,
因为什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西)来调用而已,
不会隐式地传入任何参数。这个和静态语言中的静态方法比较像。

classmethod
是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地
当作第一个参数传入。就这种方法可能会比较奇怪一点,不过只要你搞清楚了python里class也是个真实地
存在于内存中的对象,而不是静态语言中只存在于编译期间的类型,就好办了。

正常的方法就是和一个类的实例对象相关的方法,通过类实例对象进行调用,并将该实例对象隐式地作为第一个参数传入,这个也和其它语言比较像。


区别:类方法需要额外的类变量cls,当有之类继承时,调用类方法传入的类变量cls是子类,而不是父类。类方法和静态方法都可以通过类对象和类的 实例对象访问。



①静态方法

>>> class Foo:
str = "I'm a static method."
def bar():
     print Foo.str
bar = staticmethod(bar)
>>> Foo.bar()
I'm a static method.


②类方法

>>> class Foo:
str = "I'm a static method."
def bar(cls):
     print cls.str
bar = classmethod(bar)
>>> Foo.bar()
I'm a static method.

 

上面的代码我们还可以写的更简便些(python2.4+新语法):

①静态方法

>>> class Foo:
str = "I'm a static method."
@staticmethod
def bar():
      print Foo.str
>>> Foo.bar()
I'm a static method.


②类方法

>>> class Foo:
str = "I'm a static method."
@classmethod
def bar(cls):
      print cls.str
>>> Foo.bar()
I'm a static method.
 

 


转自:http://hi.baidu.com/wutaof509/blog/item/b6687f299f6e6123d42af1bf.html

分享到:
评论

相关推荐

    深入Python类:静态方法与类方法的较量

    ### 深入Python类:静态方法与类方法的较量 Python作为一种被广泛采用的高级编程语言,自1991年由Guido van Rossum首次发布以来,已经成为了许多领域内的首选工具。Python的设计理念非常注重代码的可读性和简洁性,...

    详解Python中的静态方法与类成员方法

    ### Python中的静态方法与类成员方法详解 #### 前言 在Python编程语言中,类的方法有两种特殊的形式:静态方法(Static Method)和类成员方法(Class Method)。这两种方法在设计模式、类的设计以及代码复用方面...

    Python中的类方法与静态方法:深入理解与实践应用

    在Python编程中,类方法和静态方法是类中定义的函数,它们在处理与类相关的操作时非常有用。类方法通常用于操作类属性,而静态方法则用于执行与类无关的操作。本文将深入探讨Python中的类方法和静态方法,包括它们的...

    Python实例方法、类方法、静态方法的区别与作用详解

    本文实例讲述了Python实例方法、类方法、静态方法的区别与作用。分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们...

    深入掌握Python中的类方法与静态方法:使用技巧与实践案例

    本文将详细介绍如何在Python中定义和使用类方法与静态方法,并提供丰富的代码示例。 类方法和静态方法是Python中两个非常有用的功能,它们提供了不同的方式来组织和复用代码。类方法可以访问和修改类属性,适合实现...

    python实现静态方法工具类

    在这个文件中,可以像 Java 中的静态方法一样,定义函数或类方法,只需在函数名或方法名前加上 @staticmethod 或者不加,即可定义成静态方法,无需实例化相关对象即可直接调用。 在 Python 中,可以使用模块(Module...

    Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析

    在Python编程语言中,类方法、实例方法和静态方法是面向对象编程的重要组成部分。它们各自有不同的用途和调用方式,帮助我们更好地组织和管理代码。接下来我们将深入探讨这些概念及其用法。 首先,实例方法是类中最...

    Python类方法和静态方法.docx

    Python类方法和静态方法

    【Python入门基础】静态方法与类方法

    何时定义静态方法和类方法:当你的某个函数与其它函数没有任何关系,就可以定义,静态方法和类方法只是为了方便调用,不需要创建实例,直接类名.函数名就可以调用。 静态方法 静态方法为类所有,可以通过对象来使用...

    python中的对象方法、类方法、静态方法.pdf

    当需要执行一个与类相关但不需要访问类或实例属性的操作时,使用静态方法最为合适。例如,上面的Login类中的get_name_pwd静态方法用于获取用户输入的用户名和密码,它不需要访问或修改类或实例的状态。 而当需要...

    Python程序基础:类方法和静态方法.pptx

    类方法和静态方法;类方法是类所拥有的方法,需要用修饰器“@classmethod”来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(同self一样只是一个习惯),能够通过对象名调用类方法,...

    python类和函数中使用静态变量的方法

    在Python编程语言中,类和函数的静态变量通常是指那些在多次调用中保持其值不变的变量。静态变量在其他面向对象的语言如Java或C#中比较常见,但在Python中,由于其动态特性的存在,实现静态变量的方式稍有不同。本篇...

    Python 静态方法和类方法实例分析

    静态方法既不能访问实例属性也不能访问类属性,主要用于执行不需要与类或实例交互的函数。 下面通过代码来分析类属性、实例属性、类方法和静态方法的具体应用: ```python class Province(object): # 定义类属性 ...

    浅谈python 类方法/静态方法

    Python中的类方法(classmethod)和静态方法(staticmethod)是面向对象编程的重要概念,它们与实例方法(普通方法)一起构成了类的功能。理解这些方法的区别和使用场景对于编写更高效的Python代码至关重要。 1. 类...

    python(静态方法、类方法、属性方法)_.pptx

    面向对象的三大特性是指:封装、继承和多态。 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象

    浅谈python中的实例方法、类方法和静态方法

    Python中的实例方法、类方法和静态方法是面向对象编程中的核心概念,它们各自有不同的作用和使用场景。在Python中,这三个方法类型可以帮助我们更好地组织和管理类的行为。 1. **实例方法**: - 实例方法是与类的...

    python 类的继承 实例方法.静态方法.类方法的代码解析

    在本篇文章中,我们将深入探讨Python中的类继承、实例方法、静态方法和类方法,并通过具体的代码示例来理解它们的工作原理。 1. **类的继承**: 在Python中,一个类可以继承自另一个类,从而获取父类的所有属性和...

    python安装-08-静态方法.ev4.rar

    在Python编程中,了解和掌握类、对象以及方法是至关重要的,尤其是静态方法,这是本教程"python安装-08-静态方法.ev4"的重点内容。 在面向对象编程(OOP)中,静态方法是一种特殊类型的方法,它与类而不是类的实例...

Global site tag (gtag.js) - Google Analytics