口碑好的网站开发可以建网站的网络公司有哪些

张小明 2026/1/13 0:33:01
口碑好的网站开发,可以建网站的网络公司有哪些,短租网网站开发 项目背景,装修公司怎么做免费网站在 Python 中#xff0c;getattr() 和 setattr() 是内置函数#xff0c;用于动态获取和动态设置对象的属性#xff08;包括方法#xff0c;这个要记住#xff0c;很有用#xff09;#xff0c;是实现反射#xff08;运行时操作对象属性#xff09;的核心工具。一、基础…在 Python 中getattr()和setattr()是内置函数用于动态获取和动态设置对象的属性包括方法这个要记住很有用是实现反射运行时操作对象属性的核心工具。一、基础概念属性对象的变量实例属性 / 类属性或方法都可视为 “属性”。动态操作代码运行时才确定要操作的属性名而非写死在代码里。二、getattr ()动态获取对象属性1. 语法getattr(object, name[, default])参数object要操作的对象实例、类、模块等。name字符串类型要获取的属性名。default可选属性不存在时返回的默认值若省略且属性不存在抛出AttributeError。返回值属性的值如果是方法返回方法对象调用需加()。2. 基础用法示例 1获取实例属性class Person: def __init__(self, name, age): self.name name self.age age p Person(Alice, 25) # 静态获取写死属性名 print(p.name) # Alice # 动态获取属性名用字符串 print(getattr(p, name)) # Alice print(getattr(p, age)) # 25 # 属性不存在时返回默认值 print(getattr(p, gender, 未知)) # 未知 # 省略默认值属性不存在则报错 # print(getattr(p, gender)) # AttributeError: Person object has no attribute gender示例 2获取方法动态调用class Calculator: def add(self, a, b): return a b def multiply(self, a, b): return a * b calc Calculator() # 动态获取方法并调用 methods [add, multiply, add, multiply, add] method_name methods[2] # 运行时确定方法名 # 动态调用对象的方法 print(getattr(calc, method_name)(4, 6))示例 3获取模块属性import math # 动态获取模块的属性 print(getattr(math, pi)) # 3.141592653589793 print(getattr(math, sqrt)(16)) # 4.0三、setattr ()动态设置对象属性1. 语法setattr(object, name, value)参数object要操作的对象。name字符串类型要设置的属性名。value要给属性赋值的内容可以是任意类型数值、字符串、方法、函数等。返回值None。2. 基础用法示例 1设置实例属性class Person: def __init__(self, name): self.name name p Person(Bob) print(p.name) # Bob # 静态设置 p.age 30 print(p.age) # 30 # 动态设置 setattr(p, age, 35) print(p.age) # 35 # 设置不存在的属性自动新增 setattr(p, gender, 男) print(p.gender) # 男示例 2动态绑定方法到对象class Dog: def __init__(self, name): self.name name # 定义一个外部函数 def bark(self): print(f{self.name} 汪汪叫) dog1 Dog(旺财) # 动态绑定方法到实例 setattr(dog1, bark, bark) dog1.bark(dog1) # 旺财 汪汪叫注意实例方法需手动传self # 绑定到类所有实例共享 setattr(Dog, bark, bark) dog2 Dog(来福) dog2.bark() # 来福 汪汪叫四、常见应用场景1. 配置解析动态映射配置项class Config: def __init__(self): self.host 127.0.0.1 self.port 8080 # 模拟配置文件键值对 config_dict {host: localhost, port: 9090, timeout: 30} cfg Config() # 动态将配置字典的键值对设置为对象属性 for key, value in config_dict.items(): setattr(cfg, key, value) print(getattr(cfg, host)) # localhost print(getattr(cfg, timeout)) # 302. 序列化 / 反序列化动态处理对象属性def obj_to_dict(obj): 对象转字典动态获取属性 result {} # 遍历对象的所有属性排除内置属性 for attr in dir(obj): if not attr.startswith(__): result[attr] getattr(obj, attr) return result class User: def __init__(self, id, name): self.id id self.name name user User(1, 张三) print(obj_to_dict(user)) # {id: 1, name: 张三, ...}3. 插件系统动态加载插件方法class PluginManager: def __init__(self): self.plugins {} def load_plugin(self, plugin_name, plugin_func): # 动态注册插件设置属性 setattr(self, fplugin_{plugin_name}, plugin_func) self.plugins[plugin_name] plugin_func def run_plugin(self, plugin_name, *args): # 动态执行插件获取属性 plugin getattr(self, fplugin_{plugin_name}, None) if plugin: return plugin(*args) else: raise ValueError(f插件 {plugin_name} 未找到) # 定义插件函数 def hello_plugin(name): return fHello, {name}! pm PluginManager() pm.load_plugin(hello, hello_plugin) print(pm.run_plugin(hello, Python)) # Hello, Python!五、注意事项属性名必须是字符串getattr()/setattr()的name参数必须是字符串不能直接传变量名。避免覆盖内置属性动态设置属性时不要覆盖对象的内置属性如__init__、__dict__否则可能导致对象异常。p Person(Alice, 25) setattr(p, __init__, lambda self: None) # 不推荐会破坏类的初始化逻辑默认值的使用getattr()建议始终传入default避免属性不存在时抛出异常除非明确希望报错。方法与函数的区别动态获取方法时实例方法需要绑定到对象或手动传self类方法 / 静态方法可直接调用。六、总结函数作用核心场景getattr()动态获取对象属性 / 方法运行时不确定属性名、插件调用setattr()动态设置 / 新增对象属性配置映射、动态绑定方法这两个函数是 Python 反射机制的核心能极大提升代码的灵活性尤其适用于需要动态处理对象属性的场景如框架开发、配置管理、插件系统等。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎么自己做导航网站海淀青岛网站建设

PyTorch nn.Module 自定义网络层编写规范 在深度学习项目中,我们常常会遇到这样的场景:标准的线性层、卷积层已经无法满足模型设计的需求。比如你正在实现一个新型注意力机制,需要引入可学习的缩放因子;或者构建一个动态路由网络&…

张小明 2026/1/12 20:51:59 网站建设

沧州网站制作报价网站正在建设中的代码

第一章:Open-AutoGLM模型与ModelScope平台深度解析Open-AutoGLM 是基于 ModelScope 平台构建的自动化生成语言模型,专为高效推理与任务编排设计。该模型融合了多阶段提示工程、动态上下文管理与自适应输出优化机制,适用于复杂业务场景下的智能…

张小明 2026/1/12 20:51:57 网站建设

社区门户网站规范化建设网站备案 快递

兼容 是对企业历史投资的尊重 是确保业务平稳过渡的基石 然而 这仅仅是故事的起点 在数字化转型的深水区,企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行,还是敏感数据的安全防护,亦或是复杂场景下的性能优…

张小明 2026/1/11 9:15:10 网站建设

残联网站建设概况天津技术网站建设

AutoGPT如何识别和过滤虚假信息?验证机制解析 在当今信息爆炸的时代,搜索引擎返回的结果常常真假难辨——一篇看似权威的“科学发现”可能出自营销号之手,一个被广泛引用的数据或许早已过时。当AI系统开始自主获取外部信息来完成任务时&#…

张小明 2026/1/7 20:08:58 网站建设

校园电子商务网站建设书店网站建设人员分配

QRemeshify是一款专为Blender设计的智能重网格化插件,能够将复杂的三角网格转换为高质量的四边形拓扑结构。无论你是3D建模新手还是经验丰富的专业人士,这款工具都能为你的工作流程带来革命性的改变。 【免费下载链接】QRemeshify A Blender extension f…

张小明 2026/1/4 23:35:03 网站建设

中国建筑官网站网红营销分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式案例展示平台,包含10种典型开发者画像(如全栈工程师、数据科学家、游戏开发者等),每种画像展示其VSCode字体配置方案、…

张小明 2026/1/5 5:37:47 网站建设