< 返回技术文档列表

python中 __str__和__dict__怎么用

发布时间:2021-11-07 00:16:02

这篇文章主要介绍了python中 __str__和__dict__怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

__str__ ,__unicode__

 使用版本: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__

  • 但是有些特殊的对象是没有__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__怎么用”这篇文章对大家有帮助,同时也希望大家多多支持血鸟云,关注血鸟云行业资讯频道,更多相关知识等着你来学习!


/template/Home/Zkeys/PC/Static