gpt4 book ai didi

python - 如何最好地向对象添加多个字段

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:03 24 4
gpt4 key购买 nike

这更多的是一个“技术”的问题。我正在尝试在 Python 中创建一个具有一定数量变量的类。存储它们的最佳方式是什么?

我想要某种结构,使我能够快速检索值而无需编写进一步的函数:

a = myclass()
a.add('name','John')
a.add('age',30)
b = myclass()
b.add('a complete different attribute','value')

然后:

print a.name
John

print a.retrieve('name')
John

我知道我可以通过在类上有一个两列列表来做到这一点,当我添加和编写一个检索特定值的函数时,该类会被填充。但我想知道 Python 是否已经内置了一些东西,因此可以简化代码的阅读。

谢谢

最佳答案

你可以让类有一个字典变量,add会不断添加到该字典变量中,然后你可以使用 a.dictvariable['<your variable>'] 。字典是一种存储键:值对的数据结构。

示例(python3):

class MyClass:
def __init__(self):
self.dict = {}

def add(self, name, val):
self.dict[name] = val

def get(self, name):
self.dict.get(name)

然后您可以将代码用作:

a = MyClass()
a.add('name','John')
a.add('age',30)
b = MyClass()
b.add('a complete different attribute','value')
print(a.get('name'))
print(b.get('a complete different attribute'))

使用 dict.get ,将确保如果 'name' 不存在于 dict 中,则返回 null。访问字典变量的另一种方法是 -

dict['name']

这将返回该字典中“name”键中存储的值。但如果字典中不存在“名称”,则会抛出 KeyError .

或者,您可以使用setattr() ,如下所示:

class MyClass:
pass

a = MyClass()
setattr(a, 'name', 'John')
print(a.name)

或者您可以在 MyClass 中创建自己的扭曲函数,该函数依次调用 setattr() 。示例:

class MyClass:
def add(self, name, val):
setattr(self, name, val)

a = MyClass()
a.add('name','John')
print(a.name)

关于python - 如何最好地向对象添加多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547082/

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