频道栏目
首页 > 资讯 > 其他 > 正文

面向对象:绑定方法与非绑定方法

18-03-01        来源:[db:作者]  
收藏   我要投稿

1>概念性的东西

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

1、绑定方法:绑定给谁,就由谁来调用,谁来调用,谁就是self/cls

绑定到对象的方法:在类内定义的,没有被任何装饰器修饰的函数属性

对象.bound_method(),自动将对象当做第一个参数传入

(类也可以调用,但必须按函数的调取规则来,即self需要手动传参)

绑定到类的方法:在类内定义的,用classmethod装饰器修饰的函数属性

类.bound_method(),自动将类当做第一个参数传入

(对象也可以调用,但仍将类作为第一个参数传入)

2、非绑定方法

不与类或者对象绑定,用staticmethod装饰器修饰的函数属性,类或者对象都可以调用,也就是普通函数,普通函数

就没有自动传值这一说了,该怎么传就怎么传

2>应用

设想一个场景,我先需要简单的查询对象的一些属性信息,定义一个简单的类解决,如下

现在增加需求,有时候还需要从配置文件获取信息,遂,增加一个针对配置文件操作的函数,如下

但是这样写有2个问题:1、调取麻烦,因方法本就是绑定给对象使用,类调用起来还要自己传参;2、类名写死了,obj不管

是哪个类调用,都只能返回People类对象

所以,这时可以介入 @classmethod了,改写如下

综上所述

# 绑定给对象,就应该由对象来调用,自动将对象本身当做一个参数传入
# 绑定给类,就应该由类来调用,自动将类本身当做第一个参数传入


相关TAG标签
上一篇:SoapUI Pro使用教程
下一篇:H3CSE路由-IPv6路由协议
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站