首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

@classmethod和@staticmethod装饰器

@staticmethod 静态装饰器:当用此装饰器定义方法时,不会传递类或实例作为它的参数,这意味着可以在类中放置一个函数。静态方法就是普通的函数,只是碰巧在类的定义体中,而不是在模块层定义。...在《流畅的Python》中,作者对这两个装饰器的评价:classmethod 装饰器非常有用,但是我从未见过不得不用 staticmethod 的情况。...map(int, date_as_string.split('-')) date1 = cls(day, month, year) return date1 @staticmethod...= year def display(self): return "{0}-{1}-{2}".format(self.month, self.day, self.year) @staticmethod...00:00:00PM" 代码来自下面的链接,答的很赞: https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner

55220

Python入门之@classmethod与@staticmethod

@staticmethod ========================================   Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的 类方法...,也可以是 @staticmethod 装饰的 静态方法 ,用的最多的还是不带装饰器的 实例方法 ,如果把这几个方法放一块,对初学者来说无疑是一头雾水,那我们该如何正确地使用它们呢?...就是一个普通工具而已     注意:与绑定到对象方法区分开,在类中直接定义的函数,没有被任何装饰器装饰的,都是绑定到对象的方法,可不是普通函数,对象调用该方法会自动传值,而staticmethod装饰的方法...def m1(self, n): print("self:", self) self.m2(n) @staticmethod静态方法  print(A.m3) >>: <function...class A: @staticmethod def m1() pass @staticmethod def m2(): A.m1

1.6K60

为什么 classmethod 比 staticmethod 更受宠?

1052)要远远多于 staticmethod(539),这是为什么呢?...如果一个类的函数上面加上了 staticmethod,通常就表示这个函数的计算不涉及类的变量,不需要类的实例化就可以使用,也就是说该函数和这个类的关系不是很近,换句话说,使用 staticmethod...4、本质区别 我们可以尝试自己实现一下 classmethod 和 staticmethod 这两个装饰器,来看看他们的本质区别: class StaticMethod: def __init_...代码的执行结果如下: 可以看出,StaticMethod 和 ClassMethod 的作用和标准库的效果是一样的,也可以看出 classmethod 和 staticmethod 的区别就在于 classmethod...也就是说凡是使用 staticmethod 的地方,把 staticmethod 换成 classmethod,然后把函数增加第一个参数 cls,后面调用的代码可以不变,反过来却不行,也就是说 classmethod

32250

python中staticmethod装饰器的作用

python中的staticmethod装饰器(decorator)主要是方便将外部函数集成到类体中, 美化代码结构, 重点在可以不需要类实例化的情况下调用方法如果去掉staticmethod,在方法中加...不使用staticmethod的代码如何写的:IND = 'ON'def checkind(): return (IND== 'ON')class Kls(object): def __init...使用staticmethod的代码, 用staticmethod包装的方法可以内部调用, 也可以通过类访问或类实例化访问:IND = 'ON'class Kls(object): def __init...__(self, data): self.data = data @staticmethod #加了@staticmethod,把外部方法集成到类体 def checkind...checkind())print(Kls.checkind())结果:Reset done for: 12DB connection made for: 12TrueTrue两个代码的区别后者是加了@staticmethod

10510

Python中三个装饰器函数用法(property、staticmethod、classmethod )

cls): #cls指向了类的内存空间 print('当前角色的国家是%s' %cls.Country)# alex=Person()# alex.func()Person.func()三.staticmethod...静态方法不需要self这个参数了通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?...并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法# staticmethod...## 如果 一个方法 既不会用到对象中的属性也不会用到类中的属性# 就应该被定义为一个静态方法# 小编创建了一个Python学习交流群:725638078class Student: @staticmethod

35610
领券