Python面向对象之类的内置attr属性示例
作者:我是马克思小清新 发布时间:2022-03-22 18:02:12
标签:Python,面向对象
本文实例讲述了Python面向对象之类的内置attr属性。分享给大家供大家参考,具体如下:
这个比较简单。
代码示例:
# -*- coding:utf-8 -*-
#! python3
class Foo:
x = 1;
def __init__(self,y):
self.y = y;
def __getattr__(self,item):
print('----->from getattr:你找的属性不存在')
def __setattr__(self, key, value):
print('----> from setattr')
#self.key = value
# 正常思维设置,但是只要设置属性就会触发这个方法,从而进入死递归,
# 所以考虑从字典的属性入手修改属性值。
self.__dict__[key] = value
def __delattr__(self,item):
print('----->from delattr')
#del self.item
#这个也是同样的道理,会进入死递归
self.__dict__.pop(item)
#_setattr_添加/修改属性会触发它的执行
f1 = Foo(10)
print(f1.__dict__) #因为你重写了__setattr__,凡是赋值操作都会触发它的运行,你啥都没写,就是根本没赋值
#除非你直接操作属性字典,否则无法赋值
f1.z = 3
print(f1.__dict__)
#__delattr__删除属性的时候会触发
f1.__dict__['a'] = 3 #可以直接修改对象的属性字典,来完成添加/修改属性的操作
del f1.a
print(f1.__dict__)
运行结果:
----> from setattr
{'y': 10}
----> from setattr
{'y': 10, 'z': 3}
----->from delattr
{'y': 10, 'z': 3}
内置attr属性有三个:__getattr__,___setattr__,__delattr__
如果不重写,那么就用系统默认的。
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/qq_33531400/article/details/79914528


猜你喜欢
- 下边我就简单说一下过程和原理。第一步:实现一个匿名函数并能自己执行。(function(){ })() 这个函数在一样编的好的J
- 使用库元素必须首先在DW中正确建立站点。 库被设计用来使重复性的工作更快、更容易并尽可能地无差错。 任
- 可以采用exec方法注意:使exec不能返回一些变量的值,而且当前的变量值在exec的语句里无效。declare @tempStr
- 一、使用的工具haystack是django的开源搜索框架,该框架支持Solr,Elasticsearch,Whoosh,*Xapian*搜
- 是时候了—— 在大部分情况下当用户输入密码时把它们用清晰的文字显示出来。一直以来,提供反馈、把系统状态形象化是最基本的可用性原则,当用户输入
- 本文实例讲述了python实现两个dict合并与计算操作。分享给大家供大家参考,具体如下:用pythonic 的方法,将两个dict合并,并
- 堆排序堆是一种完全二叉树(是除了最后一层,其它每一层都被完全填充,保持所有节点都向左对齐),首先需要知道概念:最大堆问题,最大堆就是根节点比
- 一、在vs中新建一个工程,然后新建一个源文件二、右击上述图片中的mysql_test工程名,然后在最下方找到属性,并点击三、点击VC++目录
- (1)二进制数据类型 二进制数据包括 Binary、Varbinary 和 ImageBinary 数据类型既可以是固定长度的(Binary
- Oracle中SQL语句连接字符串的符号为|| select catstr(tcdm) || (',') from T_YW
- PHP代码 $str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/&quo
- 关于数据库的逻辑设计,是一个很广泛的问题。本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以
- 本文实例分析了PHP中怎样防止SQL注入。分享给大家供大家参考。具体分析如下:一、问题描述:如果用户输入的数据在未经处理的情况下插入到一条S
- 一些MySQL发布对MySQL数据库中的系统表的结构进行了更改,添加了新权限或特性。当你更新到新版本MySQL,你应同时更新系统表,以确保它
- 这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务
- 本文实例讲述了python使用cPickle模块序列化的方法,分享给大家供大家参考。具体方法如下:import cPickledata1 =
- 方法一:读取文件时设置代码如下:Data = pd.read_excel(level_path, sheet_name=0, encodin
- 具体代码如下所示:# -*- coding: utf-8 -*-import redisimport datetime''&
- 今天在编写PHPDoc的导出文档的时候发现一个很郁闷的错误,虽然这个warning不是什么重要错误,但是看着总是很不爽的。于是就去网上找了很
- vue element-ui动态面包屑导航,供大家参考,具体内容如下直接上代码一、template代码// 这是单独的组件<templ