python 内建属性
在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 内建属性的更多相关文章
- Python属性和内建属性
属性property 1. 私有属性添加getter和setter方法 class Money(object): def __init__(self): self.__money = 0 def ge ...
- Python 属性方法、类方法、静态方法、 特殊属性__doc__ (内建属性)
总结:和类的关联性讲:属性方法>类方法>静态方法 属性方法@property:仅仅是调用方式不用+括号. 类方法@classmethod:访问不了累的属性变量,只可以访问类变量. 静态方法 ...
- [pyhton]python内建方法
撸一遍python的内建方法 这样做的好处就是:我如果要完成一个功能的时候,如果能用内建方法完成,就用内建方法.这样可以提高效率,同时使自己的代码更加优雅.哎呦?那岂不是撸完就是python高手了?我 ...
- python内建的命名空间研究
python内建的命名空间研究 说明: python内置模块的命名空间.python在启动的时候会自动为我们载入很多内置的函数.类,比如 dict,list,type,print,这些都位于 __bu ...
- 类装饰器,元类,垃圾回收GC,内建属性、内建方法,集合,functools模块,常见模块
'''''''''类装饰器'''class Test(): def __init__(self,func): print('---初始化---') print('func name is %s'%fu ...
- 13 内建属性 _getattribute_ 内建函数
1.内建属性 2.__getattribute__ 属性访问时拦截器 class Itcast(object): def __init__(self,subject1): self.subject1 ...
- Python内建模块--collections
python内建模块--collections collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点 ...
- Python内建的对象列表
Python内建的对象列表 刚写Python肯定会遇到这样的情况,想写些什么,但又不知从何写起... 在我看来问题在于我们不知道有什么东东可以拿来玩,这里列出Python的内建对象,稍微归类了一下,多 ...
- Python 中内建属性 __getattribute__
参考自:https://blog.csdn.net/yitiaodashu/article/details/78974596 __getattribute__是属性访问拦截器,就是当这个类的属性被访问 ...
随机推荐
- pip install --upgrade urllib3==1.25.2
pip install --upgrade urllib3==1.25.2 pip 安装,更新模块 moudle_name:是对应的模块名:请自行更换为自己需要更新的模块名 查看所有可更新的模块: ...
- 025_Excel知识汇总
一.Excel相对引用和绝对应用的区别 加上了绝对地址符“$”的列标和行号为绝对地址,在公式向旁边复制时不会发生变化,没有加上绝对地址符号的列标和行号为相对地址,在公式向旁边复制时会跟着发生变化. 具 ...
- activiti 自定义用户
https://blog.csdn.net/meng564764406/article/details/53789958 此文目的: 对网络上的关于对activiti 使用做一个总结,因为很难找到一个 ...
- JS高级:闭包
1 如何产生闭包? 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包(closure) 2 闭包到底是什么? 使用chrome调试查看 理解一: 闭包是嵌套的内部函 ...
- Win 10 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问....
按window+R键输入gpedit.msc 来启动本地组策略编辑器 依次找到“计算机配置-管理模板-网络-Lanman工作站”这个节点,在右侧内容区可以看到“启用不安全的来宾登录”这一条策略设置.状 ...
- SUSE操作系统,如何查看操作系统版本?
背景描述: 今天需要统计操作系统版本,我在其中一台主机上执行cat /etc/redhat-release发现没有这个,应该知道不是redhat系统,然后想,怎么查来着,忘了,找了下,再此记录下. # ...
- Influx Sql系列教程二:retention policy 保存策略
retention policy这个东西相比较于传统的关系型数据库(比如mysql)而言,是一个比较新的东西,在将表之前,有必要来看一下保存策略有什么用,以及可以怎么用 I. 基本操作 1. 创建re ...
- docker+k8s基础篇二
Docker+K8s基础篇(二) docker的资源控制 A:docker的资源限制 Kubernetes的基础篇 A:DevOps的介绍 B:Kubernetes的架构概述 C:Kubernetes ...
- WordPress概览
"绝望是一种罪过"-------------------------<老人与海> WordPress 是世界上使用最广泛的博客系统,是一款开源的PHP软件,在GNU通用 ...
- LeetCode 227. 基本计算器 II(Basic Calculator II)
227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...