ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

12.8 类与对象的绑定方法和非绑定方法

12.8 类与对象的绑定方法和非绑定方法

12.8 类与对象的绑定方法和非绑定方法

  • 绑定方法:方法绑定给对象使用。
  • 对象的绑定方法:没有加任何装饰的方法就是对象的绑定方法;只有对象能用,类也能使用,类使用时必须传参数。
  • 类的绑定方法:加了@classmethod装饰器的方法就是类的绑定方法;类能使用,对象也能使用,但是数据类型依然是类;不需要传入参数。
  • 非绑定方法: 加了@staticmethod装饰器的方法就是非绑定方法,也就是一个普通函数。
class Foo:#绑定给对象:只有对象能用,类也能使用,类使用时必须传参数def f1 (self):print(self)@classmethod  #让被装饰的函数给类使用,不需要加参数,约定俗成参数为cls#绑定给类的方法类能使用,对象也能使用,但是参数依然是类。def f2(cls): print(cls)#什么都不绑定的,非绑定方法,定义了普通函数。@staticmethoddef f3(self): #和普通函数一样print(self)def f1 (aa):print(aa)#绑定给对象
f=Foo()
f.f1()
#输出:<__main__.Foo object at 0x000001AF5C9E9640>#绑定给类
Foo.f2()
#输出:<class '__main__.Foo'>
# Foo.f1(11) #不这样调用f.f2()
#输出: <class '__main__.Foo'>#非绑定方法
Foo.f3(22)
#22
f.f3('fff')
#输出:fff
  1. 什么时候使用对象的绑定方法?
    如果这个方法需要使用对象作为参数的时候,就得使用对象绑定方法。

  2. 什么时候使用类的绑定方法 ?
    这个方法需要使用类作为参数,就得使用类绑定方法:@classmethod。

  3. 什么时候使用非绑定方法?
    这个方法就不需要类作为参数,又不需要对象作为参数使用非绑定方法:@staticmethod。

返回列表