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

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

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

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():pass11 print(func)12 print(f.tell)13 14 结果为:15 
16
17
>

类里面定义的函数与对类来说与普通函数来说没有什么区别,一般是绑定到对象的,

 

绑定到类的方法:在类内定义的被装饰器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 = Foo10         print(cls)11 12 print(Foo.func)13 14 结果为:15 16 
>

可以直接执行Foo.func(),结果为:

 

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     @staticmethod13     def func1(x, y):14         return x + y15 16 # print(Foo.func)17 # Foo.func()18 f = Foo('abc')19 print(Foo.func1)20 print(f.func1)21 22 结果为:23 24 
25
Foo.func1(1, 2) f.func1(1, 3) 结果为:
1 32 4

 

转载于:https://www.cnblogs.com/xudachen/p/8622801.html

你可能感兴趣的文章
android开发之定制ViewPager滑动事件
查看>>
【转】我所积累的20条编程经验
查看>>
Fiddler拦截并动态修改网页内容简易教程
查看>>
文件操作的 Win32 API
查看>>
IsSynchronizedWithCurrentItem 会让 ListBox 默认选中第一项
查看>>
java多线程-多线程常识
查看>>
团队冲刺01
查看>>
MATLAB—地图
查看>>
转 List<T>采用delegate快速实现排序、查找等操作
查看>>
(摘要)100个伟大的商业理念:理念26:品牌空间
查看>>
移动端的行高问题
查看>>
索引超出了数组界限。 在 System.Collections.Generic.Dictionary`2.Resize
查看>>
Knockout Js 使用
查看>>
ASP.NET Core 中的 Razor 页面介绍
查看>>
POJ-2299 Ultra-QuickSort 逆序对数量
查看>>
C#泛型委托Predicate、Action、Func
查看>>
【转】c#中泛型的协变与逆变:<in T>详解
查看>>
vue.js 开发环境的搭建脚手架cli
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记[2依赖属性]
查看>>
7月新的开始 - Git报错:Please tell me who you are. ---- Git 使用中报错以及对应的解决方法系列 - 02...
查看>>