博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绑定方法 与 非绑定方法
阅读量:5061 次
发布时间:2019-06-12

本文共 872 字,大约阅读时间需要 2 分钟。

类中定义函数分为了两大类:

1. 绑定方法

    特殊之处:  绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入

    绑定给 对象 的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

    绑定给 的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的

2. 非绑定方法

    特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果

    绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法

 ps:  区分时看 有没有 自动传入

 

#绑定 绑定方法与非绑定方法class Foo:    def func(self):       #绑定给 对象的方法 类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果        print('func',self)    @classmethod     #绑定给 类的的方法   def func1(cls): print('func1',cls) @staticmethod #非绑定方法, 普通函数
  def func3(x,y): print(x,y)
obj = Foo() obj.func() Foo.func1() obj.func1() obj.func3(1,2) Foo.func3(1,2)
结果: func <__main__.Foo object at 0x000001F4111D7A58> func1 
func1
1 2 1 2

总结:

   1、绑定给对象的,应该由对象来调

ps:绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果

   2、绑定给类的,应该由类来调

 

转载于:https://www.cnblogs.com/TF511/p/9850103.html

你可能感兴趣的文章
MYSQL分区表功能测试简析
查看>>
codevs 1080 线段树练习
查看>>
JS模块化库seajs体验
查看>>
Android内核sysfs中switch类使用实例
查看>>
POJ2288 Islands and Bridges(TSP:状压DP)
查看>>
POJ3250 Bad Hair Day(单调栈)
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
IOS开发UI篇--UITableView的自定义布局==xib布局
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
查看>>
struts2中<s:form>的应用
查看>>
QML学习笔记之一
查看>>
7NiuYun云存储UploadPicture
查看>>
Window 的引导过程
查看>>
python与 Ajax跨域请求
查看>>
Java实体书写规范
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
六、PowerDesigner 正向工程 和 逆向工程 说明
查看>>