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
  • 相关阅读:
    Laravel中Contracts的理解和使用
    laravel 服务容器的用法
    linux 安装go环境
    权限设计-系统登录用户权限设计
    Laravel 中使用 JWT 认证的 Restful API
    使用laravel-wechat微信支付
    composer查看全局配置
    如何在 Laravel 项目中处理 Excel 文件
    laravel各种请求类
    Centos创建用户并授权
  • 原文地址:https://www.cnblogs.com/xudachen/p/8622801.html
Copyright © 2011-2022 走看看