我是靠谱客的博主 幸福滑板,最近开发中收集的这篇文章主要介绍python学习手册(第4版) 第三十一章 类的高级主题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.再次回顾程序结构

程序由模块组成,模块中包含了语句块,语句块中包含了表达式,表达式创建并处理对象。

 

2.类和类型合并

类现在就是类型,类型就是类

>>> type(type)
<class 'type'>
>>>

3.多继承搜索顺序

先横向搜索,再纵向搜索;先宽度搜索,再深度搜索。

 

4.元类

每一个类都由一个元类生成。

元类,要么是type自身,要么是它定制来扩展和管理生成的类的一个子类。

 

5.所有对象派生自object

python3.x中都是新式类,隐式继承object,也可显式继承;

而python2.x中需要显示继承才能达到同样的效果。

类型自身派生自object,并且object派生自type,即便二者是不同的对象---一个循环的关系覆盖了对象模型,这样形成了一个循环,所以类型就是类。

>>> type(object)
<class 'type'>
>>>

 

6.静态方法(staticmethod)和类方法(classmeethod)

在ptyhon2.x中,在类中会定义两种方法,不用一个实例就可以调用:静态方法和类方法。

静态方法:与一个类中的简单的无实例函数类似的工作;

类方法:传递一个类而不是实例。

在python3.x中, 无实例的方法只通过一个类名调用,而不需要一个staticmethod声明,但这样的方法确实是通过实例来调用。

无论是python2.x还是python3.x,静态方法的写法,

@staticmethod
#使用装饰器
def mymethod():
#不传入self实例
pass

静态方法调用时不需要实例传参,与类之外的简单函数不同,其变量名位于定义所在类的范围内,属于局部变量,而且可以通过继承去查找。

 

7.装饰器

函数装饰器提供了一种方式,替函数明确了特定的运算模式,也就是将函数包裹了另一层,在另一函数的逻辑内实现,可以用来记录函数的日志或调用次数、检查参数的类型等。

使用方式为,在def之前,由@符号后面跟所谓的元函数(metafunction,管理另一函数的函数)

装饰器可以自定义,使用运算符重载__call__,为类实例实现函数调用的接口,如下,

>>> class tracer:
...     def __init__(self,func):
...         self.calls = 0
...         self.func = func
...     def __call__(self,*args):                            #为类实例实现函数调用的接口
...         self.calls += 1
...         print('call %s to %s'%(self.calls,self.func.__name__))
...         self.func(*args)
...
>>> @tracer                                                      #函数装饰器调用方法
... def spam(a,b,c):
...     print(a,b,c)
...
>>> spam(1,2,3)
call 1 to spam
1 2 3
>>> spam('a','b','c')
call 2 to spam
a b c
>>> spam(4,5,6)
call 3 to spam
4 5 6
>>>

 

8.类装饰器

 

 

最后

以上就是幸福滑板为你收集整理的python学习手册(第4版) 第三十一章 类的高级主题的全部内容,希望文章能够帮你解决python学习手册(第4版) 第三十一章 类的高级主题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部