二次包装方法 改写__getattr____setattr____delattr__

Posted ch2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二次包装方法 改写__getattr____setattr____delattr__相关的知识,希望对你有一定的参考价值。

可以用类继承的方法,对其他类进行重写。例如:

 1 class List(list):
 2     def show_middle(self):  # 自己定义一个方法
 3         num = int(len(self) / 2)
 4         return self[num]
 5 
 6     def __setattr__(self, key, value):
 7         if type(value) is str:
 8             self.__dict__[key] = value
 9         else:
10             print(你输入的类型错误)
11 
12     def append(self, a):
13         if type(a) is str:
14             # super().append(a)
15             list.append(self, a)  # 必须把self传进去,原因类调用方法必须传入实例本省即self
16         else:
17             print(类型不对)
18 
19 
20 l1 = List(helloworld)
21 l1.append(2)
22 print(l1)
23 print(l1, type(l1))
24 print(l1.show_middle())
25 输出:
26 [h, e, l, l, o, w, o, r, l, d, 2]
27 [h, e, l, l, o, w, o, r, l, d, 2] <class __main__.List>

 

以上是关于二次包装方法 改写__getattr____setattr____delattr__的主要内容,如果未能解决你的问题,请参考以下文章

python getattribute、get、getattr、getitem等用法

面向对象进阶

PYTYON 面向对象进阶

六 面向对象高级属性

__getattr __,newstyle vs oldstyle类的不对称行为

二次加工标准类型(包装)