item系列及定制strrepr
Posted dabai123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了item系列及定制strrepr相关的知识,希望对你有一定的参考价值。
class Foo: def __getitem__(self, item): print(‘正在执行getitem‘,item) return self.__dict__[item] def __setitem__(self, key, value): print(‘正在执行setitem‘) self.__dict__[key] = value def __delitem__(self, key): print(‘正在执行delitem‘) self.__dict__.pop(key) f1 = Foo() print(f1.__dict__) f1[‘name‘] = ‘jinling‘ print(f1.__dict__) f1[‘age‘] = 19 print(f1[‘age‘]) print(f1.__dict__) del f1[‘age‘] print(f1.__dict__)
像上面这样实例化后以操作字典的方式增删查才可以实现
二、__str__ 及__repr__
可以自己定制str方法,控制打印的信息,由print 触发str
class Foo: def __init__(self,name,age): self.name = name self.age = age def __str__(self): return ‘名字是 年龄是‘.format(self.name,self.age) f1 = Foo(‘jinling‘, 19) print(f1) # -->str(f1)-->f1.__str__()
__repr__是在python解释中触发
当__str__ 与__repr__共存时
class Foo: def __init__(self,name,age): self.name = name self.age = age def __str__(self): return "print会触发这个哦" def __repr__(self): return ‘名字是 年龄是‘.format(self.name,self.age) f1 = Foo(‘jinling‘, 19) print(f1) # -->str(f1)-->f1.__str__()
如果__str__ 没有被定义, 那么就会使用__repr__来代替输出
注意:这俩方法的返回值必须是字符串,否则抛出异常
class Foo: def __init__(self,name,age): self.name = name self.age = age # def __str__(self): # return "print会触发这个哦" def __repr__(self): return ‘名字是 年龄是‘.format(self.name,self.age) f1 = Foo(‘jinling‘, 19) print(f1) # -->str(f1)-->f1.__str__()---->f1.__repr__()
以上是关于item系列及定制strrepr的主要内容,如果未能解决你的问题,请参考以下文章
Azure Stack技术深入浅出系列4: Azure Stack自定义虚拟机镜像和Gallery Item