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__)

将输出:

{}

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

Python类的特殊属性的更多相关文章

  1. Python 类的私有属性与私有方法

    1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...

  2. python 类的私有属性和方法 (转载)

    转载:http://www.runoob.com/python/python-object.html 类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能 ...

  3. Python 简明教程 --- 20,Python 类中的属性与方法

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属 ...

  4. Python类的私有属性

    class Bar(object): __age = 18 sex = 'male' def __init__(self, ): pass def f(self): print(self.__age) ...

  5. python类的高级属性

    ---恢复内容开始--- 类方法:通过@classmethod装饰器实现,类方法和普通方法的区别是,类方法只能访问类变量,不能访问实例变量,代码如下: class Person(object): de ...

  6. Python类的实例属性详解

    实例属性 1.类被实例化后才会具有的属性 2.一般在_init_()方法中创建并初始化 3.直接使用即定义:self.<属性名> 4.引用方法:self.<属性名> 5.sel ...

  7. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、

    常规情况下,类的属性字典是共享的,而实例的字典是独立的.如果一个类的属性较少,但是拥有很多的实例,这些实例的属性字典会占用较多的内存空间.对这样的类来说,为了节省内存空间,可以使用__slots__类 ...

  8. Python类定义、属性、初始化和析构

    类的定义,属性和方法概念 方法中self的作用和意义 初始化( __init__ ) 和 析构方法( __del__ ) 类的定义 class 类名 实例 实例名 = 类名() 一个“实例”的“特征” ...

  9. Python 类的高级属性(可选)

    1.slots实例:限制类的实例有合法的属性集,只有__slots__属性列表中的属性才可能成为实例属性. 对象的实例通常没有一个属性字典,可以在__slots__列表中包含一个属性字典__dict_ ...

随机推荐

  1. 第四章——SQLServer2008-2012资源及性能监控(1)专家

    http://blog.csdn.net/dba_huangzj/article/details/8614817

  2. js文件/图片从电脑里面拖拽到浏览器上传文件/图片

    1.效果展示 2.html 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <!DOCTYPE html> <html lang=& ...

  3. 数字类型(NSInteger,NSUInteger,NSNumber)

    在Objective-C中,我们可以使用c中的数字数据类型,int.float.long等.它们都是基本数据类型,而不是对象.也就是说,不能够向它们发送消息.然后,有些时候需要将这些值作为对象使用. ...

  4. Hibernate操作Blob数据

      首先看数据库.数据库中新建一个BlobTable表,表中有两个字段,一个id(主键)一个picture字段是Blob类型字段.然后使用Hibernate向该数据库中写入和读取数据 在POJO类中p ...

  5. 详解在Visual Studio中使用git版本系统(图文)

    http://www.codesky.net/article/201111/123474.html 这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指正. 第一 ...

  6. AngularJS的ng-repeat的内部变量

    代码下载:https://files.cnblogs.com/files/xiandedanteng/angularJSng-repeatInnerVariable.rar 代码: <!DOCT ...

  7. hql 时间

    1.hql中时间格式转换 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d ...

  8. mysql 海量数据删除

    百度知道 - mysql删除海量数据   MySQL 数据库删除大批量数据的优化     看到这儿的话,最后看下这篇文章,对于操作海量数据的sql深入分析 cnblogs - 深度分析DROP,TRU ...

  9. UUID随机字符串

    public static void main(String[] args){ System.out.println(UUID.randomUUID().toString()); } //输出:698 ...

  10. 如何打造你的独特观点(一) ——形成“自己的想法”的基础课zz

    信息过载的时代,能在各种KOL的声音中保持独立思考很不容易,能输出独特观点又进一层.不断练习我们独立思考的能力,有助于看清周围复杂的事物,也能让我们在日常生活中给人留下“有趣之人”的印象,提升人际交往 ...