Python面向对象之类的内置attr属性示例

yipeiwu_com6年前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相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

Django admin实现图书管理系统菜鸟级教程完整实例

Django admin实现图书管理系统菜鸟级教程完整实例

Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦...

使用Python进行AES加密和解密的示例代码

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代...

python字符串连接方式汇总

在python中有很多字符串连接方式,今天就在这里具体总结一下: ①.最原始的字符串连接方式:str1 + str2 ②.python 新字符串连接语法:str1, str2 ③.奇怪的...

Python中处理字符串的相关的len()方法的使用简介

 len()方法返回字符串的长度。 语法 以下是len()方法的语法: len( str ) 参数     NA 返回值 此方法...

Django集成celery发送异步邮件实例

Django集成celery发送异步邮件实例

安装依赖 pip install django-celery-beat pip install django-celery-email pip install celery pip...