@staticmethod和@classmethod

# coding:utf-8
class A(object):
    bar = 1
    def foo(self):
        print ‘hello i am foo‘
    def myfoo(self):
        print ‘hello i am myfoo‘

    @staticmethod
    def static_foo():
        print ‘static_foo‘
        print A.bar

    @classmethod
    def class_foo(aabbcc):
        print ‘class_foo‘
        print aabbcc.bar
        aabbcc().foo()

A.static_foo()
A.class_foo()
print "~~~~~~~~~~"
a = A()
a.foo()
a.myfoo()

static_foo
1
class_foo
1
hello i am foo
~~~~~~~~~~
hello i am foo
hello i am myfoo

参考

使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。

时间: 2024-10-06 19:49:44

@staticmethod和@classmethod的相关文章

Python中的staticmethod和classmethod

在python中,静态方法和类方法都是可以通过类对象和类对象实例访问.但是区别是: @classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法. 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例. 普通对象方法至少需要一个self参数,代表类对象实例 类方法有类变量cls传入,从而可以用cls做一些相关的处理.并且有子类继承时,调用该类方法时,传入的类变量cls是子类,而非父类. 对于类方法,可以通过类来调用,就像C.

Python中的staticmethod和classmethod 的异同

class MethodTest(): var1 ="class var" def__init__(self, var2 = "object var"): self.var2 = var2 @staticmethod defstaticFun(): print'static method' @classmethod defclassFun(cls): print 'class method' staticmethod和classmethod的相同点: 1.都可以通过

@staticmethod和@classmethod的作用与区别

一般情况,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢 从它们的使用上来看, - @staticmethod 不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样. - @classmethod 也不需要self参数,但第一个参数需要是表示自身类的cls参数

Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法

Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: def foo(x): print "executing foo(%s)"%(x) class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print "executing cla

飘逸的python - @staticmethod和@classmethod的作用与区别

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁. 既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢 从它们的使用上来看, @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样. @cla

@staticmethod与@classmethod的异同点

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁. 既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢 从它们的使用上来看, @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样. @cla

Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数 区别(完全解析)

原文地址:http://blog.csdn.net/caroline_wendy/article/details/23383995 静态函数(staticmethod), 类函数(classmethod), 成员函数的区别(完全解析) 定义: 静态函数(@staticmethod): 即静态方法,主要处理与这个类的逻辑关联, 如验证数据; 类函数(@classmethod):即类方法, 更关注于从类中调用方法, 而不是在实例中调用方法, 如构造重载; 成员函数: 实例的方法, 只能通过实例进行调

知识点 - python 装饰器@staticmethod和@classmethod区别和使用

1.通常来说,我们使用一个类的方法时,首先要实例化这个类,再用实例化的类来调用其方法 class Test(object): """docstring for Test""" def __init__(self, arg=None): super(Test, self).__init__() self.arg = arg def say_hi(self): print('hello wrold') def main(): test = Test(

python中 staticmethod与classmethod

原文地址https://blog.csdn.net/youngbit007/article/details/68957848 原文地址https://blog.csdn.net/weixin_35653315/article/details/78165645 原文地址https://www.cnblogs.com/1204guo/p/7832167.html 在Python里, 在class里定义的方法可以大致分为三类: 实例方法, 类方法与静态方法. 用一个表格总结如下: 方法类型 修饰 调用