在类内部定义的函数,分为两大类:
一:绑定方法:绑定给谁,就应该由谁来调用就会把调用者当作第一个参数自动传入。
绑定到对象的方法:在类定义的没有被任何装饰器(classmate)修饰
绑定方法又可以分为:绑定给对象和绑定到类
二:非绑定方法:没有自动传值
非绑定方法:不与类和对象绑定
class People: def __init__(self, name): self.__name = name def name(self): print('welcome %s ' % self.__name) @classmethod def tell(self): print('绑定给类') @staticmethod def look(self,val): if not isinstance(val,str): print('名字必须是字符串') return print('yes') p1=People('zhang') print(p1.tell) People.tell() p1.look('zhang','wang')
分析总结:可以从调用看出,People.tell()在classmate修饰过后,它不需要给定参数,而是自动把类当作参数传入,而非绑定方法是在staticmethod修饰过后可以看出,调用它必须给定定义时的参数位数。