在python中调用staticmethod用到参数

在python中调用staticmethod用到参数

提起staticmethod有些小伙伴不会使用,但如果我们说的是静态方法,相信就想起了相关的知识点了。毕竟大家对英文名称上不是很敏感,静态方法也是面向对象中三个调用方法之一,需要我们python初学者每个人都能掌握和运用,下面就在python中调用staticmethod是否需要用到参数的问题进一步探究。

1.静态方法staticmethod

定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;

调用:实例对象和类对象都可以调用。

2.类中普通的方法,实际上既可以被类直接调用也可以被类的实例对象调用,但是被实例对象调用的时候,要求方法至少有一个参数,而且调用时会将实例对象本身传给第一个参数。

>>>classStudent(object):
def__init__(self,name):
self.name=name
defsayHello(lang):
print(lang)
iflang=='en':
print('Welcome!')
else:
print('你好!')


>>>Student.sayHello
<functionStudent.sayHelloat0x02AC7810>
>>>a=Student('Bob')
>>>a.sayHello
<boundmethodStudent.sayHelloof<__main__.Studentobjectat0x02AD03F0>>
>>>Student.sayHello('en')#类调用的时候,将'en'传给了lang参数
en
Welcome!

>>>a.sayHello()#类实例对象调用的时候,将对象本身自动传给了lang参数,不能再接收参数
<__main__.Studentobjectat0x02AD03F0>
你好!
>>>a.sayHello('en')Traceback(mostrecentcalllast):File"<pyshell#7>",line1,in<module>a.sayHello('en')TypeError:sayHello()takes1positionalargumentbut2weregiven