绑定方法 与 非绑定方法

类中定义函数分为了两大类:

1. 绑定方法

    特殊之处:  绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入

    绑定给 对象 的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

    绑定给 的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的

2. 非绑定方法

    特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果

    绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法

 ps:  区分时看 有没有 自动传入

 

#绑定 绑定方法与非绑定方法
class Foo:
    def func(self):       #绑定给 对象的方法 类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果
        print('func',self)

    @classmethod     #绑定给 类的的方法 
  def func1(cls): print('func1',cls) @staticmethod #非绑定方法, 普通函数
  def func3(x,y): print(x,y)
obj = Foo()

obj.func()
Foo.func1()
obj.func1()
obj.func3(1,2)
Foo.func3(1,2)


结果:
func <__main__.Foo object at 0x000001F4111D7A58>
func1 <class '__main__.Foo'>
func1 <class '__main__.Foo'>
1 2
1 2

总结:

   1、绑定给对象的,应该由对象来调

ps:绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果

   2、绑定给类的,应该由类来调

 

转载于:https://www.cnblogs.com/TF511/p/9850103.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值