zoukankan      html  css  js  c++  java
  • 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__)

    将输出:

    {}

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

  • 相关阅读:
    DES加密和解密PHP,Java,ObjectC统一的方法
    TreeSaver 使用教程整理——Step 3: Creating Grids
    android面试题目汇总持续更新
    Android SQLiteHelper
    Android计算地图上两点距离
    asp.net 下载文件几种方式
    android 权限
    ORA01795的原因及解决办法
    C# winFrom 通过注册新协议实现网页链接打开本地程序
    Android 读SIM卡信息
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710168.html
Copyright © 2011-2022 走看看