• Python类的特殊属性


    Python中的特殊属性

    定义如下类:

    class Foo(object):
        """Foo class definition"""
    
    类的特殊属性都有哪些呢?

    __name__

    Foo.__name__ 类的名字

    __doc__

    Foo.__doc__ 类的文档字符串

    __bases__

    Foo.__bases__ 类的所有父类构成的元组

    __dict__

    Foo.__dict__ 类的属性

    __module__

    Foo.__module__ 类定义所在的模块

    __class__

    Foo.__class__ 类实例所属的类,与type(Foo)返回值相同

    示例

    如:

    print(Foo.__name__)
    print(Foo.__doc__)
    print(Foo.__bases__)
    print(Foo.__dict__)
    print(Foo.__module__)
    print(Foo.__class__)

    输出如下:

    Foo
    Foo class definition
    (<class 'object'>,)
    {'__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': 'Foo class definition', '__dict__': <attribute '__dict__' of 'Foo' objects>, '__module__': '__main__'}
    __main__
    <class 'type'>

    说明

    __name__常常用在需要得到类的字符串的名字时,使用type(Foo)时会返回类型实例。

    __doc__是文档字符串,定义时需要紧跟在class定义的下一行。

    __bases__用来处理类继承,它包含了由所有父类组成的元组。

    __dict__由类的数据属性组成。访问类的属性时,会搜索该字段,如果在__dict__中没有找到,将会在基类中__dict__中进行搜索,而搜索的基类是按照出现在类定义继承从左到右出现的顺序。对类属性修改只会影响在本类,并不会影响父类中的__dict__。

    __module__界定了类所属的模块。

    __class__新式类定义此属性,表明类已经是一种类型。


    注意

    一定不要将类属性与实例属性弄混淆。如:

    f = Foo()
    print(f.__dict__)

    将输出:

    {}

    因为还没有作为实例的属性。

  • 相关阅读:
    抽丝剥茧设计模式- 责任链模式应用场景
    抽丝剥茧设计模式-工厂和抽象工厂模式
    抽丝剥茧设计模式-你真的懂单例模式吗?
    抽丝剥茧设计模式- 啰嗦几句
    生产环境ng配置
    Linux命令
    内容过滤报错
    user 报错
    cxlabel 显示不全的解决方法
    关于SQL事务的一些坑
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710168.html
Copyright © 2020-2023  润新知