在python中创建一个类,它不仅有我们自定义的属性和方法,还有与生俱来的一些属性和方法,我们叫它内建属性。

下面是类常用内建属性列表。

常用专有属性 说明 触发方式
__init__ 构造初始化函数 创建实例后,赋值时使用,在__new__
__new__ 生成实例所需属性 创建实例时
__class__ 实例所在的类 实例.__class__
__str__ 实例字符串表示,可读性 print(类实例),如没实现,使用repr结果
__repr__ 实例字符串表示,准确性 类实例 回车 或者 print(repr(类实例))
__del__ 析构 del删除实例
__dict__ 实例自定义属性 vars(实例.__dict__)
__doc__ 类文档,子类不继承 help(类或实例)
__getattribute__ 属性访问拦截器 访问实例属性时
__bases__ 类的所有父类构成元素 类名.__bases__

__init__:负责一个类实例化中的初始化操作

__new__:在创建实例化时发生作用,在__init__之前执行,主要作用是创建实例对象,典型的应用是在单利模式中.

class Singleton(object):

    def __new__(cls, *args, **kw):

        if not hasattr(cls, '_instance'):

            org = super(Singleton, cls)

            cls._instance = org.__new__(cls, *args, **kw)

        return cls._instance

__class__:是示例对象的属性,该属性指向了实例化该对象的类,代表实例化该对象的抽象类,可以通过它调用类的方法和类属性。

class Test:
name = "抽象类" def __init__(self):
self.name = '实例名字' def test(self):
print('实例方法') test = Test()
test.__class__.name # Out[21]: '抽象类'
test.__class__.test(1) # 实例方法

__str__:实例化对象的字符串表示(代表名字),面向用户,通过print输出实例化类的结果

class Test:
def __str__(self):
return '这是实例化类的说明书' test = Test()
print(test) # 这是实例化类的说明书

__repr__:实例化对象的字符串表示,面向开发者的

class Test:
def __str__(self):
return '用户可见' def __repr__(self):
return '开发者可见' test = Test()
print(test) # 用户可见
test # Out[30]: 开发者可见 在控制台输出实例化对象时的显示信息

__del__:当一个实例化对象被删除时,该方法将调用,该方法是执行删除对象的操作。

class Test:
def __del__(self):
print('我被删除了】') test = Test()
del test # 我被删了

__dict__:类或实例化对象的属性字典

class Test:
name = "抽象类"
def __init__(self):
self.name = '实例名字' def test(self):
print('实例方法') test = Test()
test.__dict__
Out[51]: {'name': '实例名字'} Test.__dict__ Out[52]: mappingproxy({'__dict__': <attribute '__dict__' of 'Test' objects>, '__doc__': None, '__init__': <function __main__.Test.__init__>, '__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Test' objects>, 'name': '抽象类', 'test': <function __main__.Test.test>})
 

__doc__:是对函数/方法/模块所实现功能的简单描述,但当指向具体对象时,会显示此对象.

class Test:
"""我是说明书""" test = Test()
test.__doc__
Out[60]: '我是说明书'

__getattribute__:属性拦截器,内部拦截修改某个属性的值

class Test:
def __init__(self):
self.name = '正常名字' def __getattribute__(self, name):
return '拦截后名字' test = Test()
test.name
Out[63]: '拦截后名字'

__bases__:查询类的父类元素

class A:
pass class B:
pass class C(A, B):
pass C.__bases__
Out[94]: (__main__.A, __main__.B)
 

内建属性一般是不建议修改,如果要修改那么尽量将整套的内建属性复写,否则容易出现错误。

python 内建属性的更多相关文章

  1. Python属性和内建属性

    属性property 1. 私有属性添加getter和setter方法 class Money(object): def __init__(self): self.__money = 0 def ge ...

  2. Python 属性方法、类方法、静态方法、 特殊属性__doc__ (内建属性)

    总结:和类的关联性讲:属性方法>类方法>静态方法 属性方法@property:仅仅是调用方式不用+括号. 类方法@classmethod:访问不了累的属性变量,只可以访问类变量. 静态方法 ...

  3. [pyhton]python内建方法

    撸一遍python的内建方法 这样做的好处就是:我如果要完成一个功能的时候,如果能用内建方法完成,就用内建方法.这样可以提高效率,同时使自己的代码更加优雅.哎呦?那岂不是撸完就是python高手了?我 ...

  4. python内建的命名空间研究

    python内建的命名空间研究 说明: python内置模块的命名空间.python在启动的时候会自动为我们载入很多内置的函数.类,比如 dict,list,type,print,这些都位于 __bu ...

  5. 类装饰器,元类,垃圾回收GC,内建属性、内建方法,集合,functools模块,常见模块

    '''''''''类装饰器'''class Test(): def __init__(self,func): print('---初始化---') print('func name is %s'%fu ...

  6. 13 内建属性 _getattribute_ 内建函数

    1.内建属性 2.__getattribute__ 属性访问时拦截器 class Itcast(object): def __init__(self,subject1): self.subject1 ...

  7. Python内建模块--collections

    python内建模块--collections collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点 ...

  8. Python内建的对象列表

    Python内建的对象列表 刚写Python肯定会遇到这样的情况,想写些什么,但又不知从何写起... 在我看来问题在于我们不知道有什么东东可以拿来玩,这里列出Python的内建对象,稍微归类了一下,多 ...

  9. Python 中内建属性 __getattribute__

    参考自:https://blog.csdn.net/yitiaodashu/article/details/78974596 __getattribute__是属性访问拦截器,就是当这个类的属性被访问 ...

随机推荐

  1. python实现读取并显示图片的两种方法

    https://www.cnblogs.com/lantingg/p/9259840.html 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片. ...

  2. C# 实现HTTP的POST(完整可运行并且通过测试的代码)

    https://blog.csdn.net/qq_21381465/article/details/80016159 我是通过VS2010 ,新建一个winform窗体项目,然后写了一个测试软件,软件 ...

  3. Spring MVC -- 转换器和格式化

    在Spring MVC -- 数据绑定和表单标签库中我们已经见证了数据绑定的威力,并学习了如何使用表单标签库中的标签.但是,Spring的数据绑定并非没有任何限制.有案例表明,Spring在如何正确绑 ...

  4. harbor镜像仓库-https访问配置

    1. 证书的生成 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书.以下内容将向您展示如何创建自己的CA,并使用您的CA签署服务器证书和客户端证书.   1.1 生成c ...

  5. linux : 各个发行版中修改python27默认编码为utf-8

    该方法可解决robot报错:'ascii' codec can't encode character u'\xf1' in position 16: ordinal not in  range(128 ...

  6. Consul1.5.0 带ACL控制集群搭建

    Consul Cluster with ACL1.机器规划2.先配置好三个Server,并启动一遍.3.生成并配置agent-token,解决server agent ACL block问题4.启动一 ...

  7. spring mvc 参数类型转换

    实现方式以字符串转Date为例说明: 全局配置 第一种:实现 Converter 接口 实现类: public class StringToDateConveter implements Conver ...

  8. ply2obj

    """ Simple script to convert ply to obj models """ import os from argp ...

  9. LeetCode 328. 奇偶链表(Odd Even Linked List)

    328. 奇偶链表 328. Odd Even Linked List 题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是 ...

  10. son-server模拟http mock数据

    json-server 前端开发中,想通过异步请求服务端json数据,但是服务端还没有开发完,此时可以快速启动一个server服务 1,安装json-server插件 npm -g add json- ...