Python入门:面向对象之方法简介

方法:

即为类中的函数。

普通方法(实例方法):

  1. 至少一个参数self,并将实例化对象绑定到self
  2. 由对象通过点运算符调用
  3. 类不可直接调用,如确有需要需显式将对象作为参数传递进去
<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>

类方法:

  1. 使用@classmethod语句修饰
  2. 至少一个参数cls,并自动将类本身绑定到cls
  3. 可直接访问类属性
<code>class Person:
    gender = 'male'

    @classmethod
    def func(cls):  # 定义类方法
        cls.gender = 'female'  # 修改类属性gender为female

Person.func()  # 直接用类调用类方法
print(Person.gender)
/<code>

静态方法:

  1. 使用@classmethod语句修饰
  2. 不需要参数cls、self
  3. 类、实例均可以调用
<code>class Person:
    @staticmethod
    def func():  # 定义静态方法
        print('static method running.')

Person.func()  # 类调用静态方法
Person().func()  # 实例调用静态方法
/<code>

魔术方法

在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称魔术方法,例如类的初始化方法 __init__ 。

关于魔术方法,见作者另文:Python入门:面向对象之魔术方法。


分享到:


相關文章: