python 类装饰器和继承
来源:互联网 发布:八爪鱼软件的作用 编辑:程序博客网 时间:2024/06/03 16:43
类装饰器:
被装饰器装饰的类的方法和属性集合,是装饰器中的方法和属性集合 的子集
例子一:
def myc(myclass):
class InnerClass:
def __init__(self,x,y,z):
self.z=z
self.x=x
self.y=y
self.a=myclass(self.x,self.y)
def pr(self,g):
self.a.pr(g) #注意这里不是self.a.pr(self,g)
print(self.z)
return InnerClass
@myc
class B:
def __init__(self,x,y):
self.x=x
self.y=y
#A.__init__(self,x,y)
#self.r=r
def pr(self,g):
t=self.x+self.y+g
print(t)
b=B(1,9,4)
b.pr(6)
例子二:
def myc(myclass):
class InnerClass:
def __init__(self,x=9,y,z=8): #改 x=9为 x 报错:SyntaxError: non-default argument follows default argument
#终于明白了为什么报错:就是说我把含有默认值的参数放在了不含默认值的参数的前面,这样问题就好解决 了,调换一下参数的位置就好了
self.z=z
self.x=x
self.y=y
self.a=myclass(self.x,self.y)
def pr(self,g):
self.a.pr(g)
print(self.z)
return InnerClass
@myc
class B:
def __init__(self,x,y):
self.x=x
self.y=y
#A.__init__(self,x,y)
#self.r=r
def pr(self,g):
t=self.x+self.y+g
print(t)
def pf(self,f):
print(f)
b=B(1,2)
b.pr(6)
b.pf(2) #报错:AttributeError: 'InnerClass' object has no attribute 'pf', 调用被装饰类中有的方法,但装饰器中不存在方法会报错 这就是为什么 被装饰类方法属性 要 包含于装饰器的方法属性中
类继承:
父类的方法和属性 包含于 子类中和方法和属性 子集
class InnerClas:
def __init__(self,x,y,z):
self.z=z
self.x=x
self.y=y
def pl(self):
print(self.z)
class B(InnerClas):
def __init__(self,x,y,z,f):
self.x=x
self.y=y
self.z=z #子类继承了父类的方法和属性 需在子类的命名空间也把他们添加上
self.f=f
#A.__init__(self,x,y)
#self.r=r
def pr(self,r):
t=self.x+self.y+r+self.f
print(t)
self.pl() #继承父类之后,调用父类方法,相当于调用子类自身的方法一样
#错误写法:InnerClas.pl(self) self.pl(self)
b=B(1,9,4,9)
b.pr(8)
- python 类装饰器和继承
- python 模块,类和全局函数---命名空间;继承和装饰器总结
- python装饰器装饰类
- 装饰模式和python装饰器
- python 继承、多继承、魔法方法、装饰器
- 装饰模式设计-装饰类和继承类的区别
- 装饰类和继承的区别
- 装饰和继承
- Python 类装饰器
- python 类装饰器
- python 递归和装饰器
- Python 装饰器装饰类中的方法
- Python 装饰器装饰类中的方法
- Python 装饰器装饰类中的方法
- python里除了继承修改类之外还有装饰器也能
- Python类和继承
- python中装饰器的使用和类装饰器在类中方法的使用
- 装饰和继承的区别
- Spring提供的Resource/ResourceLoader接口操作资源文件
- 虚拟机全自动安装
- IDLE报Subprocess Startup Error
- 关于Python中单双引号以及三引号
- 思维导图_Linux文件系统及常用监控命令
- python 类装饰器和继承
- 浅谈训练物体检测与物体识别的训练数据
- VS2015 ASP.NET MVC项目Razor智能提示失败的解决方案
- python_numpy_20171031
- 对单例的认知
- BZOJ 2142 礼物 拓展Lucas 解题报告
- FreeRTOS的队列发送源码解析
- java 算法的精髓
- 结合redis设计与实现的redis源码学习-8.1-object.c(对象实现)