在类内部定义的函数,分为两大类:
-
一:绑定方法:绑定给谁,就应该由谁来调用,谁来调用就回把调用者当作第一个参数自动传入
- 绑定到对象的方法:在类内定义的没有被任何装饰器修饰的
- 绑定到类的方法:在类内定义的被装饰器classmethod修饰的方法
-
二:非绑定方法:没有自动传值这么一说了,就类中定义的一个普通工具,对象和类都可以使用
非绑定方法:不与类或者对象绑定
#_*_coding:utf-8_*_
class Foo:
def __init__(self,name):
self.name=name
#这不是普通函数,这就做绑定对象的方法
def tell(self):
print('名字是%s' %self.name)
@classmethod #自动传入的是类 #Foo.func()它输出 这是绑定的类的方法
def func(cls): #cls=Foo
print(cls)
@staticmethod #不能自动传入类也不能自动传入对象 非绑定方法
def func1(x,y):
print(x+y)
f=Foo('egon')
#print(Foo.tell)
#<function Foo.tell at 0x0000009AECFA89D8>
#Foo.tell(f)
#print(f.tell)
#给对象去调用的,类定义的函数是绑定给对象
#f.tell() #绑定给谁就又谁来调用 #绑定方法:绑定给谁,就应该由谁来调用,谁来调用就回把调用者当作第一个参数自动传入
# print(Foo.func)
#谁来调用就把谁当做第一个参数
#Foo.func() #<class '__main__.Foo'> 绑定到类的方法:在类内定义的被装饰器classmethod修饰的方法
print(Foo.func1)
print(f.func1)
#类来调用
Foo.func1(1,2)
#对象来调用
f.func1(1,3)