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
  • 相关阅读:
    Beego 学习笔记12:文件的操作
    Beego 学习笔记11:文件的上传下载
    Beego 学习笔记10:Easyui使用
    Beego 学习笔记9:Boostrap使用介绍
    Beego 学习比较8:SQL语句
    Beego 学习笔记7:JS分页
    Beego学习笔记6:分页的实现
    【嵌入式linux】用户登录密码验证配置
    【Linux 环境搭建】ubuntu下nfs安装与配置
    【嵌入式 Linux文件系统】如何使用NFS文件系统
  • 原文地址:https://www.cnblogs.com/xudachen/p/8622801.html
Copyright © 2011-2022 走看看