gpt4 book ai didi

python - 如何在 Python 中动态创建属性?

转载 作者:IT老高 更新时间:2023-10-28 21:09:09 31 4
gpt4 key购买 nike

假设我有这样的类(class):

class Alphabet(object):
__init__(self):
self.__dict = {'a': 1, 'b': 2, ... 'z': 26}

@property
def a(self):
return self.__dict['a']

@property
def b(self):
return self.__dict['b']

...

@property
def z(self)
return self.__dict['z']

定义这将是一项漫长而繁琐的任务,而且似乎非常多余。有没有办法动态创建这些属性?我知道您可以使用内置的 setattr 动态创建属性,但我想控制读/写/删除访问(因此我想使用属性)。谢谢!

最佳答案

不要使用属性,而是实现以下方法:

  • __getattr__(self, name)
  • __setattr__(self, name, value)
  • __delattr__(self, name)

http://docs.python.org/reference/datamodel.html#customizing-attribute-access

您的 __getattr__ 方法可能如下所示:

def __getattr__(self, name):
try:
return self.__dict[name]
except KeyError:
msg = "'{0}' object has no attribute '{1}'"
raise AttributeError(msg.format(type(self).__name__, name))

关于python - 如何在 Python 中动态创建属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967551/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com