zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    整理了所有软件,增加了一些常用的,总计约150个
    Delegate与Action,建议先看为敬
    你们要的练手项目来了
    心塞,我的配置文件到底去哪了
    Modbus,看这个就行了
    PLC做得好好的,我为什么要去学上位机?
    这种取巧的方法,你应该掌握
    从零开始实现放置游戏(十六)——道具系统(1)道具字典
    Elasticsearch 之 Filter 与 Query 有啥不同?
    【小菜学网络】MTU
  • 原文地址:https://www.cnblogs.com/xudachen/p/8622801.html
Copyright © 2011-2022 走看看