python - 如何使用减少每个单独元素的多重设置/取消设置功能
问题描述
考虑到我将要分配和取消分配多个值,我如何使此代码更紧凑
class A:
def __init__(self,*args,**kwargs):
self._a = 0
self._b =0
def set_a(self):
self._a = 1
def set_b(self):
self._b = 1
def unset_a(self):
self._a =0
def unset_b(self):
self._b = 0
x=A()
x.set_a()
print(x._a) # 1
x.unset_a()
print(x._a) # 0
我只是想避免编写多个设置和取消设置函数,只是一个简单的 1 函数,我将类型(设置/取消设置)和哪个变量传递给目标,就可以了
解决方案
我很想使用字典而不是多个变量来执行以下操作:
class A:
def __init__(self,*args,**kwargs):
self._d = {'_a': 0, '_b': 0}
def set_d_item(self, key, val):
self._d[key] = val
x=A()
x.set_d_item('_a', 1)
print(x._d['_a']) # 1
x.set_d_item('_a', 0)
print(x._d['_a']) # 0
如果您确实需要示例中的属性,则可以使用exec()
,但我真的不建议允许任意代码执行:
class A:
def __init__(self,*args,**kwargs):
self._a = 0
self._b =0
def set_item(self, key, val):
exec(f'self.{key} = {val}')
x=A()
x.set_item('_a', 1)
print(x._a) # 1
x.set_item('_a', 0)
print(x._a) # 0
推荐阅读
- python - 无法使用硒从链接中获取文本
- c++ - C++ int 提升动机的限制
- java - java中如何计算硬盘的hash值?(ShA-256或MD5实现)
- bash - 在运行命令 bash 之前保存输入
- python - 从字典中过滤偶数和奇数值并将这些偶数和奇数值添加到列表中并将它们写入 txt 文件
- git - Git忽略有趣的参考
- postgresql - 给出类型“st_geometry”的 Postgres 不存在
- php - 从 MYSQL 数据库检索后,PHP 中的哈希密码不是字符串
- html - HTML 页面中的异常/不需要的边距
- module - 在 Unqork 中,如何确保模块和工作流即使在 30 天后也不会被删除?