这篇文章主要介绍了python中 __str__和__dict__怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
使用版本:python 3+ 以后 ,删除了__unicode__ 转而用 __str__ 代替
说明:
1、__str__ 是被 print 函数调用的,一般都是return一个什么东西。
2、这个东西应该是以字符串的形式表现的。如果不是要用str()函数转换。
3、当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str__
class A(): def __init__(self): self.name='lee' self.age=18 self.job='it' def __str__(self): #重写 return 'xxx' a=A() print(A) #输出 <class '__main__.A'> print(a) #输出xxx print(str(a)) #输出xxx print(str(A)) #输出 <class '__main__.A'> print(A.__str__) #输出 <function A.__str__ at 0x00000000011C9510> print(a.__str__) #输出<bound method A.__str__ of <__main__.A object at 0x0000000000A49048>>
一个对象的属性查找顺序遵循首先查找实例对象自己,然后是类,接着是类的父类。
__dict__是一个字典,键是属性名,值为属性值。
实例有自己的__dict__,它对应的类也有自己的__dict__
但是有些特殊的对象是没有__dict__属性的,这里不做讨论
class A(): def __init__(self): self.name='lee' self.age=18 self.job='it' a=A() print(a.__dict__) #输出 {'name': 'lee', 'job': 'it', 'age': 18} print(A.__dict__) ''' 输出类所有的 属性 {'__init__': <function A.__init__ at 0x0000000000B3F9D8>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None, '__module__': '__main__'} '''
当打印 类 的__dict__属性时,列出了类所包含的属性,包括一些类内置属性和类变量及构造方法__init__
当打印 实例对象 的 __dict__ 属性时,则打印 这个对象的 key ,value
当我们有一个字典时,如
bokeyuan={"b":1, "o":2, "k":3, "e":4, "y":5, "u":6, "a":7, "n":8, }
现在想将其转换为一个对象,通常会这样写:
class Dict2Obj: def __init__(self,bokeyuan): self.b = bokeyuan['b'] self.o = bokeyuan['o'] self.k = bokeyuan['k'] self.e = bokeyuan['e'] self.y = bokeyuan['y'] self.u = bokeyuan['u'] self.a = bokeyuan['a'] self.n = bokeyuan['n']
现在可以使用__dict__
class DicToObj(): def __init__(self,bokeyuan): self.__dict__.update(bokeyuan)
感谢你能够认真阅读完这篇文章,希望小编分享的“python中 __str__和__dict__怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。