• Python----面向对象---绑定方法与非绑定方法


    一、在类内部定义的函数,分为两大类:

    1、绑定方法,绑定给谁,就应该由谁来调用,谁来调用就会把调用者当做第一个参数自动传入

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

     1 class Foo:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def tell(self):
     6         print('名字是%s' % self.name)
     7 
     8 f = Foo('abc')
     9 print(Foo.tell)
    10 def func():pass
    11 print(func)
    12 print(f.tell)
    13 
    14 结果为:
    15 <function Foo.tell at 0x000002DCCBA6C620>
    16 <function func at 0x000002DCCB461E18>
    17 <bound method Foo.tell of <__main__.Foo object at 0x000002DCCB7DDEB8>>

    类里面定义的函数与对类来说与普通函数来说没有什么区别,一般是绑定到对象的,

    绑定到类的方法:在类内定义的被装饰器classmethod修饰的方法

     1 class Foo:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def tell(self):
     6         print('名字是%s' % self.name)
     7 
     8     @classmethod
     9     def func(cls):  # cls = Foo
    10         print(cls)
    11 
    12 print(Foo.func)
    13 
    14 结果为:
    15 
    16 <bound method Foo.func of <class '__main__.Foo'>>

    可以直接执行Foo.func(),结果为:

    <class '__main__.Foo'>

    2、非绑定方法:没有自动传值这么一说了,就是类中定义的一个普通工具,对象和类都可以使用

    非绑定方法:不与类或者对象绑定

     1 class Foo:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def tell(self):
     6         print('名字是%s' % self.name)
     7 
     8     @classmethod
     9     def func(cls):
    10         print(cls)
    11 
    12     @staticmethod
    13     def func1(x, y):
    14         return x + y
    15 
    16 # print(Foo.func)
    17 # Foo.func()
    18 f = Foo('abc')
    19 print(Foo.func1)
    20 print(f.func1)
    21 
    22 结果为:
    23 
    24 <function Foo.func1 at 0x000002C0AB41C730>
    25 <function Foo.func1 at 0x000002C0AB41C730>
    Foo.func1(1, 2)
    f.func1(1, 3)
    结果为:
    1 3
    2 4
  • 相关阅读:
    Android状态栏和导航栏
    ScrollView小记
    iOS本地推送
    java-集合框架-泛型1
    java-集合框架4---foreach使用--for的增强使用
    java-集合框架3-迭代器的使用
    JAVA-集合框架2
    Number 数据类型转化 NaN 函数isNaN
    数据类型分类
    VScode 插件推荐安装
  • 原文地址:https://www.cnblogs.com/xudachen/p/8622801.html
Copyright © 2020-2023  润新知