绑定方法和非绑定方法(静态方法)

绑定方法和非绑定方法

一、绑定方法

绑定方法其实就是类中的函数,绑定给谁,由谁来调用,就是谁的绑定方法。分为对象的绑定方法和类的绑定方法。

绑定方法得特殊之处:绑定给谁,谁来调用,就自动将它本身当做第一个参数传入。

1.1 类的绑定方法

1、绑定到类的绑定方法

就是用classmethod装饰器装饰的方法,为类量身定制,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调用也会将类当做第一个参数传入),python为我们内置了函数classmethod来把类中的函数定义成类的绑定方法

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    @classmethod
    def test(cls):    # 这个方法加了classmethod装饰器就是类的绑定方法
        print(cls)    # <class '__main__.Person'>
        print('这是类的绑定方法')
    
    def get_obj_by_name(self,name):  # 这个就是对象的绑定方法
        pass
p1 = Person('zyl',18)  
p1.test()    # 对象也可以调用类的绑定方法test(),但是默认传的第一个参数还是该对象的类

2、类的绑定方法用在什么地方

当不需要通过对象,只需要通过类就能完成某些事的时候,就把该方法定义为类的绑定方法。

1.2 对象的绑定方法

就是类内没有被任何装饰器装饰的方法,为对象量身定制,对象调用该方法的时候,会自动将对象作为第一个参数传入。

类也可以调用对象的绑定方法,但是这是就变成了普通的函数,有几个参数就要传几个,没有自动传值一说。具体例子上面就有,就不再写一遍了,在之前的博客中也有整理。

二、非绑定方法(静态方法)

2.1 什么是静态方法

非绑定方法也称为静态方法,就是用staticmethod装饰器装饰的方法,不与类或对象绑定,但是类和对象都可以调用,但是必须按照函数的规则来,没有自动传值一说,就是一个普通工具。

注意:与绑定到对象的方法区分开,在类中直接定义的函数,没有被任何装饰器装饰的,都是对象的绑定方法,不是普通函数,对象调用该方法就会自动传值,而staticmethod装饰器装饰的方法,不管谁来调用,都无法自动传值。

class Person:
    def __init__(self,name,age):
        self.name = name
        seld.age = age
        
    @staticmethod
    def staticmethod():
        print('我是静态方法,谁都不绑定')
    

2.2 作用

  • 一个方法跟类和对象都没有关系的时候,可以定义成静态方法,一般在类内部使用,但类外部也可以使用
  • 就是一个普通函数,想把它拿到类中管理,就可以定义成静态方法

转载于:https://www.cnblogs.com/zhuangyl23/p/11430106.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值