首页 > 代码库 > Python内置函数(60)——classmethod
Python内置函数(60)——classmethod
英文文档:
staticmethod
(function)
Return a static method for function.
A static method does not receive an implicit first argument.
The @staticmethod
form is a function decorator – see the description of function definitions in Function definitions for details.
It can be called either on the class (such as C.f()
) or on an instance (such as C().f()
). The instance is ignored except for its class.
说明:
1. 函数功能时将一个函数,变成类的一个静态方法。
>>> class Student(object): def __init__(self,name): self.name = name def sayHello(lang): print(lang) if lang == ‘en‘: print(‘Welcome!‘) else: print(‘你好!‘) staticmethod(sayHello) >>> Student.sayHello <function Student.sayHello at 0x02AC7810> >>> a = Student(‘Bob‘) >>> a.sayHello <bound method Student.sayHello of <__main__.Student object at 0x02AD03F0>>
2. 静态方法即可以被类调用,也可以被类的实例对象调用。
>>> Student.sayHello(‘en‘) # 类调用的时候,将‘en‘传给了lang参数 en Welcome! >>> a.sayHello() # 类实例对象调用的时候,将对象本身传给了lang参数 <__main__.Student object at 0x02AD03F0> 你好!
3. 将一个方法定义成类的静态方法,正确的方法是使用 @staticmethod装饰器,这样在实例对象调用的时候,不会把实例对象本身传入静态方法的第一个参数了。
# 使用装饰器定义静态方法 >>> class Student(object): def __init__(self,name): self.name = name @staticmethod def sayHello(lang): print(lang) if lang == ‘en‘: print(‘Welcome!‘) else: print(‘你好!‘) >>> Student.sayHello(‘en‘) #类调用,‘en‘传给了lang参数 en Welcome! >>> b = Student(‘Kim‘) #类实例对象调用,不再将类实例对象传入静态方法 >>> b.sayHello() Traceback (most recent call last): File "<pyshell#71>", line 1, in <module> b.sayHello() TypeError: sayHello() missing 1 required positional argument: ‘lang‘ >>> b.sayHello(‘zh‘) #类实例对象调用,‘zh‘传给了lang参数 zh 你好!
Python内置函数(60)——classmethod
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。