__setattr__, __getattr__, __delattr__, __call__

2023-10-31 15:08
文章标签 call getattr setattr delattr

本文主要是介绍__setattr__, __getattr__, __delattr__, __call__,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//转自http://blog.sina.com.cn/s/blog_4be6d8870100dtnw.html


为了弄明白python中__setattr__, __getattr__, __delattr__, __call__的作用,重写dict,扩展其功能

 
class storage(dict):#通过使用__setattr__, __getattr__, __delattr__#可以重写dict,使之通过“.”调用def __setattr__(self, key, value):self[key] = valuedef __getattr__ (self, key):try:return self[key]except KeyError, k:return Nonedef __delattr__ (self, key):try:del self[key]except KeyError, k:return None# __call__方法用于实例自身的调用#达到()调用的效果def __call__ (self, key):try:return self[key]except KeyError, k:return Nones = storage()
s.name = "hello"#这是__setattr__起的作用
print s("name")#这是__call__起的作用
print s["name"]#dict默认行为
print s.name#这是__getattr__起的作用
del s.name#这是__delattr__起的作用
print s("name")
print s["name"]
print s.name


这篇关于__setattr__, __getattr__, __delattr__, __call__的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316204

相关文章

AutoGen Function Call 函数调用解析(一)

目录 一、AutoGen Function Call 1.1 register_for_llm 注册调用 1.2 register_for_execution 注册执行 1.3 三种注册方法 1.3.1 函数定义和注册分开 1.3.2 定义函数时注册 1.3.3  register_function 函数注册 二、实例 本文主要对 AutoGen Function Call

Python __call__ 用法 作用

当一个对象为可被调用对象时,callable(object)返回为True,否则为False: Python中的对象有可被调用和不可被调用之分。 def func_test():print("func_test run")class class_test():def __init__(self):pass# func_test is callable return Trueprint("fu

Qt 错误qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

今天运行程序中有一个从网页下载文件到本地的功能运行输出下列错误         qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error     qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_client_method

js apply和call方法的使用说明和区别

在JavaScript中,apply和call都是函数对象的方法,它们允许你改变函数调用时的上下文(即this值),并且可以显式地传入参数。这两者的主要区别在于如何传递参数。 call 方法 call方法使用一系列的参数来传递给目标函数。 语法 func.call(thisArg, arg1, arg2, ...argN); thisArg:在函数被调用时,作为this值被传递给目标函

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Arathi Basin

PVP战场阿拉希盆地15人 /i 开局队伍分配:圣骑士飙车光环 /i [铁匠铺]坦克、治疗3个、输出6个(10人组) /i [伐木场]坦克、治疗、输出2(4个人组) /i [农场]留一个守(1个人组) /i  不要恋战,不要几个人打1个人,猎人假死脱战支援 /i  防守的人做个宏:NC请求支援,点几下就是几个人 /i 三点防守分配

【Python报错已解决】`SyntaxError: can‘t assign to function call`

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述:1.1 报错示例:1.2 报错分析:1.3 解决思路: 二、解决方法:2.1 方法一:检查函数返回值2.2 步骤二:返回可变对象 三、其他解决方法四 总结 引言: 在Python编程中,你

RabbitMQ练习(Remote procedure call (RPC))

1、RabbitMQ教程 《RabbitMQ Tutorials》https://www.rabbitmq.com/tutorials 2、环境准备 参考:《RabbitMQ练习(Hello World)》。 确保RabbitMQ、Sender、Receiver容器正常安装和启动。 root@k0test1:~# docker run -it --rm --name rabbitmq

python基础-迭代器、for底层机制、生成器、list结合yield、__call__、yield函数列表

迭代器概念for底层机制生成器 最简单的生成器返回列表字典元组等返回多个值构成元组 返回一个函数列表 list结合yield _call_ 多个yield形式 迭代器概念 可迭代的必须含有一个iter方法(可迭代协议) 迭代器比可迭代对象多一个next方法 包含next方法的可迭代对象就是迭代器 迭代器:包含next,iter方法的就是迭代器(迭代器协议)

Call openai-node in the backend or call https in the frontend?

题意:在后端调用 `openai-node` 还是在前端调用 `https`? 问题背景: I have a web application by ReactJS and Nodejs. This application calls OpenAI APIs. 我有一个使用 ReactJS 和 Node.js 开发的 Web 应用程序。这个应用程序调用 OpenAI 的 API。

js函数方法apply,bind,call,手写new操作符

函数方法 函数方法可以用来改变函数的this指向,对于内置的标准函数来说,改变this就相当于改变了函数的作用目标;比如说,对于一个对象的方法toString(),可以将它的使用目标修改成指定的参数, 这里原本是对obj起作用的tostring方法使用call改成了对‘123’起作用,这就是函数方法的作用,改变函数的作用目标(this指向),理解了这个之后下面介绍一下apply,bind,