类内置的attr属性

python类的内置attr属性

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__)

#__getattr__只有在使用点调用属性且属性不存在的时候才会触发
f1.xxxxxx

原文地址:https://www.cnblogs.com/NumerOne/p/11465187.html

时间: 2024-12-14 00:13:29

类内置的attr属性的相关文章

JSP内置对象和属性

JSP内置对象和属性列举如下: 1.request对象     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例.2.response对象     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它.它是HttpServletResponse类的实例.3.session对象     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开

HTML5内置邮箱验证属性

只需给提交的表单(邮箱)添加只需要type=“email”即可. 例: <form action="" method="post"> <label for="email">邮箱:</label><input id="email" name="email" type="email" /> <button type="submi

34、JavaScript面向对象(内置构造函数&amp;相关方法|属性|运算符&amp;继承&amp;面向对象)

一.面向对象 1.1 this的指向问题 要看清楚最终的函数调用者是谁. IIFE也被当做函数直接运行,IIFE的this都是window对象 函数的arguments是类数组对象,比如传入的第0项参数是函数,让它运行:arguments0,函数中的上下文是arguments对象.还要知道函数的length和arguments.length的区别. 1.2构造函数 当一个函数用new运算符调用时,此时这个函数叫"构造函数"(constructor) 构造函数四步走 创建一个新空对象 t

[转]后台页面访问权限:页面基类&amp;内置票据认证 使用方法

本文转自:http://www.cnblogs.com/fishtreeyu/archive/2011/01/29/1947421.html 一般网站后台页面除了登录页面login.aspx未登录用户可访问外,其它页面必须登录用户才可访问, 当用户未登录时进入某个页面则自动判断并跳转到登录页面: (如果login.aspx页面用到图片及Css.Js文件,那么也必须允许未登录用户可访问Images.Css.Js文件夹) 方法一:运用页面基类BasePage.cs 1.BasePage.cs代码:

01类内置方法

# 写一个单例类# __名子__ # 类中的特殊方法.内置方法 # 双下方法 # 魔法方法 # __call__ flask# __new__ 特别重要 写一个单例类# __len__# __str__ /__repr__ __call__ # __call__ flask class A: def __call__(self, *args, **kwargs): print("执行__call__方法") # # a = A() # a() # 对象加()执行call方法 # A()

EassyUI内置方法与属性

Jquery插件 easyUI属性汇总 作者: 字体:[增加 减小] 类型:转载 时间:2011-01-19我要评论 找了个时间看了下EasyUI插件,对它的插件感觉是很舒服,特地把Easy UI的大部分功能属性做了一下汇总.使用easyUI的朋友可以收藏下. 此属性列表请对照jQuery EasyUI 1.0.5,关于它的更多资讯请猛击这里. 属性分为CSS片段和JS片段. CSS类定义:1.div easyui-window        生成一个window窗口样式.      属性如下:

反射和类内置方法

# class Teacher: # dic = {'查看学生信息': 'show_student', '查看老师': 'show_teacher'} # # def show_student(self): # print('show student') # # def show_teacher(self): # print('show teacher') # # @classmethod # def func(cls): # print('func') # # chen = Teacher()

EcmaScript内置对象的属性与方法

python类内置方法的再学习

对于__setitem__和__getitem__方法:其入参看来是固定的(__getitem__(self, item),__setitem__(self, key, value)),我们并不需要重载实现,另外:类变量看来可以被实例化对象直接使用 class wenwa: myname = "陈培昌" myinfo={'name':'陈培昌',"age":22,"favorite":'喜欢练搏击,跳舞'} def sniff(self): pr