Python全栈之路----面向对象开发----绑定方法与非绑定方法

类中定义的函数分成两大类

一:绑定方法(绑定给谁,就应该由谁来调用,谁来调用就会把调用者当作第一个参数传入):

  1. 绑定到类的方法:用classmethod装饰器装饰的方法。

  2. 绑定到对象的方法:在类内定义的没有被任何装饰器修饰的

二:非绑定方法

  非绑定方法:不与类或对象绑定,没有自动传值一说,就是类中定义的一个普通工具,类和对象都能使用

class Foo:
    def __init__(self, name):
        self.name = name

    def tell(self):
        print('名字是%s' %self.name)

    @classmethod
    def func(cls):  # cls是class的缩写,提示这是绑定到类的方法  cls=Foo
        print(cls)

    @staticmethod
    def func1(x, y):
        return x + y

# 绑定到对象的方法,对象是调用者,直接把对象作为参数传入
f = Foo('egon')
print(Foo.tell)  # <function Foo.tell at 0x0000027FCC1A8840>
print(f.tell)  # <bound method Foo.tell of <__main__.Foo object at 0x0000027FCC101390>>

# 绑定到类的方法,类是调用者,直接把类作为参数传入
print(Foo.func())  # <class '__main__.Foo'>
print(Foo)  # <class '__main__.Foo'>

# 非绑定方法,不存在自动传值一说,类和对象都能调用
print(Foo.func1)  # <function Foo.func1 at 0x0000025AF41F8BF8>
print(f.func1)  # <function Foo.func1 at 0x0000025AF41F8BF8>

猜你喜欢

转载自www.cnblogs.com/Moxiaoyu666/p/10913077.html
今日推荐