一、绑定方法与非绑定方法
Python类中定义的函数分两种:绑定方法、非绑定方法!其中绑定方法又分绑定到对象与绑定到类,在类中的函数默认是绑定到对象的,即类中函数默认是给对象用的,而不是给类用的!
多态
Python本来就是多态的,不用管。。。讲完了,下课!
1.1、绑定方法
绑定方法特殊之处在于将调用者本身当作第一个参数自动传入
-
绑定给对象的方法,调用者是对象,自动传入的是对象
-
绑定给类的方法,调用者是类,自动传入的也是类
1.1.1、绑定到类classmethod()
classmethod,将它下面的函数装饰成绑定给类的方法,可以省却手动传入参数。
class School:
def __init__(self):
...
@classmethod
def print_str(cls):
return f'我不用参数'
print(School.print_str()) # 要是以往不用classmethod,这里需要传参!
# 执行得到结果
我不用参数
1.2、非绑定方法
staticmethod(),将下面函数装饰成一个静态方法,没有自动传参,即谁都不给面子!
class School:
def __init__(self):
...
@staticmethod
def print_str(cls):
return f'要想运行我,留下买路财!'
print(School.print_str('haha'))
stu1 = School()
print(stu1.print_str('haha'))
# 执行得到结果
要想运行我,留下买路财!
要想运行我,留下买路财!
不绑定,即没有绑定给任何人,调用者可以是类、对象等,没有自动传参