zoukankan      html  css  js  c++  java
  • 绑定方法和非绑定方法(静态方法)

    绑定方法和非绑定方法

    一、绑定方法

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

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

    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 作用

    • 一个方法跟类和对象都没有关系的时候,可以定义成静态方法,一般在类内部使用,但类外部也可以使用
    • 就是一个普通函数,想把它拿到类中管理,就可以定义成静态方法
  • 相关阅读:
    PHP解决imagecopymerge合成图片后黑色边角的问题
    cmake简单介绍
    python pytest测试框架介绍七 ---测试用例显示用例注释名称
    docker day001
    C语言 字节数组和hex和互相转换
    glsl 内置数学函数
    springboot分析——自定义启动类
    springboot源码分析——自动配置流程
    springboot源码分析——SPI扩展机制
    springboot分析——与其他组件的整合(JPA规范/atomikos/redis)
  • 原文地址:https://www.cnblogs.com/zhuangyl23/p/11430106.html
Copyright © 2011-2022 走看看