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. NYOJ90 整数划分(经典递归和dp)

    整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,  其中n1≥n2≥…≥nk≥1,k≥1.  正 ...

  2. LA 3708 Graveyard

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  3. luogu P2066 机器分配

    题目背景 无 题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15 ...

  4. mybatis 源码学习(二)sqlsession

    mybatis 中的sqlsession是一个非常重要的类.上篇我们分析了sessionfactory初始化配置文件,我们继续分析sessionfactory拿到会话进行的操作. 看这里.getMap ...

  5. Spring实战Day3

    通过XML创建装配bean 1.装配不存在成员变量的bean <bean id="talent" class="cn.jqzhong.Spring.study.da ...

  6. chrome mac 快捷键

    ⌘-N 打开新窗口. ⌘-T 打开新标签页. ⌘-Shift-N 在隐身模式下打开新窗口. 按 ⌘-O,然后选择文件. 在 Google Chrome 浏览器中打开计算机中的文件. 按住 ⌘ 键,然后 ...

  7. PyTorch学习问题记录

    Q1:def train() 中的model.train()的作用是什么?为什么要写? A1:class torch.nn.Module中 train(mode=True) Sets the modu ...

  8. Typora +google + Markdown Here 公众号

    一劳永逸的公众号排版方法  http://mp.weixin.qq.com/s/zb-YaacNLggG2-njF5HJ0A 

  9. How to Use Dtrace Tracing Ruby Executing

    http://googya.github.io/blog/categories/dtrace/ 最近看了点关于Dtrace的东西,它是个通用型的工具,但我主要集中于分析ruby程序的执行上面.关于操作 ...

  10. eclipse项目java版本更改

    然后.右键点击项目->properties->Java Compiler->....如图 ​ 最后,右键点击项目->properties->Project  Facets ...