方法:
即为类中的函数。
普通方法(实例方法):
- 至少一个参数self,并将实例化对象绑定到self
- 由对象通过点运算符调用
- 类不可直接调用,如确有需要需显式将对象作为参数传递进去
<code>class Person: def func(self): # 自定义方法,self必选,意为实例本身 pass xiaoming = Person() xiaoming.func() # 实例对象使用点运算符调用方法 # Person.func() 不可直接使用类调用普通方法,TypeError: func() missing 1 required positional argument: 'self' Person.func(Person()) # 确需使用,可传递一个实例参数进去/<code>
类方法:
- 使用@classmethod语句修饰
- 至少一个参数cls,并自动将类本身绑定到cls
- 可直接访问类属性
<code>class Person: gender = 'male' @classmethod def func(cls): # 定义类方法 cls.gender = 'female' # 修改类属性gender为female Person.func() # 直接用类调用类方法 print(Person.gender) /<code>
静态方法:
- 使用@classmethod语句修饰
- 不需要参数cls、self
- 类、实例均可以调用
<code>class Person: @staticmethod def func(): # 定义静态方法 print('static method running.') Person.func() # 类调用静态方法 Person().func() # 实例调用静态方法 /<code>
魔术方法
在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称魔术方法,例如类的初始化方法 __init__ 。
关于魔术方法,见作者另文:Python入门:面向对象之魔术方法。