码迷,mamicode.com
首页 > 其他好文 > 详细

绑定方法和非绑定方法

时间:2019-08-29 15:58:58      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:就会   地方   没有   直接   注意   参数   __init__   定制   init   

绑定方法和非绑定方法

绑定方法

绑定方法:绑定给谁就是谁来调用,而且会自动把它本身当做第一个参数传入。

绑定方法分为类的绑定方法和对象的绑定方法

类的绑定方法

用classmethod装饰器装饰的方法。

为类量身定制

对象可以调用,但是仍将该对象的类当做第一个参数传入

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @classmethod
    def test(cls):
        print('这是类的绑定方法')

Person.test()

# 这是类的绑定方法

类的绑定方法用在什么地方?

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

对象的绑定方法

没有被任何装饰器装饰的方法。

为对象量身定制

属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值的说法

非绑定方法

用staticmethod装饰器装饰的方法

定义在类内部,不与类或对象绑定,类和对象都可以调用,但是没有自动传值的说法,就是一个普通方法

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

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

Person.static_method()   # 类来调用
p = Person('xiaowu', 18)   
p.static_method()   # 对象来调用

# 我是静态方法,谁也不绑定
# 我是静态方法,谁也不绑定

静态方法(非绑定方法)的作用:

  • 跟类和对象都没有关系时候,可以定义成静态方法,一般在类内部使用,类外部也可以使用

  • 就是一个普通函数,想把它拿到类中管理,就可以定义成静态方法

绑定方法和非绑定方法

标签:就会   地方   没有   直接   注意   参数   __init__   定制   init   

原文地址:https://www.cnblogs.com/yunluo/p/11429868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!