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

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

  • 绑定方法:方法绑定给对象使用。
  • 对象的绑定方法:没有加任何装饰的方法就是对象的绑定方法;只有对象能用,类也能使用,类使用时必须传参数。
  • 类的绑定方法:加了@classmethod装饰器的方法就是类的绑定方法;类能使用,对象也能使用,但是数据类型依然是类;不需要传入参数。
  • 非绑定方法: 加了@staticmethod装饰器的方法就是非绑定方法,也就是一个普通函数。
class Foo:
    
    #绑定给对象:只有对象能用,类也能使用,类使用时必须传参数
    def f1 (self):
        print(self)

    @classmethod  #让被装饰的函数给类使用,不需要加参数,约定俗成参数为cls
    #绑定给类的方法类能使用,对象也能使用,但是参数依然是类。
    def f2(cls): 
        print(cls)

    #什么都不绑定的,非绑定方法,定义了普通函数。
    @staticmethod
    def 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。

posted @ 2025-09-08 20:43  bokebanla  阅读(14)  评论(0)    收藏  举报