python里除了继承修改类之外还有装饰器也能
2017-09-26 17:28
381 查看
python是面向对象的语言,它有类的继承,因此它是可以修改基类函数的功能。但是除了继承之外,类函数的功能也可以使用装饰器来修改,这种功能叫做装饰类。为了学习装饰类,需要好好地查看下面的代码:
#python 3.6
#定义装饰器函数
def decorator(aClass):
class newClass:
def __init__(self, age):
self.total_display = 0
self.wrapped = aClass(age)
def display(self):
self.total_display += 1
print("total display: ", self.total_display)
self.wrapped.display()
return newClass
#对类使用装饰器
@decorator
class Blog:
def __init__(self, age):
self.age = age
def display(self):
print("http://blog.csdn.net/caimouse age is", self.age)
#创建类对象
myBlog = Blog(15)
for i in range(3):
myBlog.display()结果输出如下:total display: 1 http://blog.csdn.net/caimouse age is 15
total display: 2 http://blog.csdn.net/caimouse age is 15
total display: 3 http://blog.csdn.net/caimouse age is 15
在这个例子里可以看到,定义了一个装饰器类的函数decorator,然后在它内部定义了一个类,这个类的方法与要被装饰类的方法一样名称。接着装饰函数返回这个类的类型,这个类型就可以拿来装饰别的类了。它的语法与使用装饰函数是一样的。
五子棋游戏开发
http://edu.csdn.net/course/detail/5487
#python 3.6
#定义装饰器函数
def decorator(aClass):
class newClass:
def __init__(self, age):
self.total_display = 0
self.wrapped = aClass(age)
def display(self):
self.total_display += 1
print("total display: ", self.total_display)
self.wrapped.display()
return newClass
#对类使用装饰器
@decorator
class Blog:
def __init__(self, age):
self.age = age
def display(self):
print("http://blog.csdn.net/caimouse age is", self.age)
#创建类对象
myBlog = Blog(15)
for i in range(3):
myBlog.display()结果输出如下:total display: 1 http://blog.csdn.net/caimouse age is 15
total display: 2 http://blog.csdn.net/caimouse age is 15
total display: 3 http://blog.csdn.net/caimouse age is 15
在这个例子里可以看到,定义了一个装饰器类的函数decorator,然后在它内部定义了一个类,这个类的方法与要被装饰类的方法一样名称。接着装饰函数返回这个类的类型,这个类型就可以拿来装饰别的类了。它的语法与使用装饰函数是一样的。
Python游戏开发入门
http://edu.csdn.net/course/detail/5690你也能动手修改C编译器
http://edu.csdn.net/course/detail/5582纸牌游戏开发
http://edu.csdn.net/course/detail/5538
五子棋游戏开发
http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672
相关文章推荐
- 除了创建时指定窗口位置之外,还有3种移动窗口位置的办法(移动的同时往往可以改变窗口大小)(SetWindowPos最有用,它有许多标志位)
- python如何修改装饰器中参数
- python继承关系中,类属性的修改
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset,
- Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
- 网络编程除了socket之外还有什么方式?
- python-实现属性可修改的函数装饰器-28
- 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset
- 除了修改WEBCONFIG会导致WEB服务重启外,还有其他的什么操作会导致重启?
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset,
- python 9-4 如何实现属性可修改的函数装饰器,python3 nolocal或者在python2中列表方式
- PHP中除了POST和GET之外还有$HTTP_RAW_POST_DATA 以及和$_POST的区别
- CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性。
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset, .
- 修改git commit 除了 git commit --amend 还有 git commmit rebase, reset,
- python 7-1 如何派生内置不可变类型(int,str,tuple,float)并修改实例化行为,继承内置tuple并实现__new__
- Qt中除了用connect可以连接信号和槽之外还有什么方法可以连接
- 开发者除了技术硬实力之外,还有哪些不可或缺的软实力