gpt4 book ai didi

python - 通过用户输入访问类属性?

转载 作者:行者123 更新时间:2023-12-01 08:16:55 24 4
gpt4 key购买 nike

我对 Python 相当陌生,刚刚开始使用类。我想做一种化学计算器(计算摩尔质量、浓度等)。我希望到目前为止我一切都正确。我的问题是:(我希望我能正确表达自己)如何通过用户输入调用类实例化?

我有以下类(class):

class Elements:
def __init__(self, name='',atomic_mass=0.0):
self.name = name
self.atomic_mass = atomic_mass

我(希望我正确地表达了这一点)像这样实例化它:

nitrogen = N = Elements('Nitrogen', 14.01)

我写了 nitrogenN 因为我想用户输入是否愿意将其称为 nitrogenN > 同样的事情也会出现。另外,这是最好的方法吗?我已经完成了所有元素及其几乎所有属性的处理。

现在,对于我自己来说,我可以这样做:print(N.atomic_mass),我会得到14.01关于我的问题,我将如何实现这样的目标:

element_name = input('Insert element name: ')
print(element_name.atomic_mass)

然后得到想要的值。我需要这样做,因为如果我想通过用户输入计算分子的质量,则需要拆分字符串,找到元素并将它们链接到属性。

我已经尝试过this但它不起作用。我知道我可以这样做:

if element_name == 'N':
print(N.atomic_mass)

但是必须对周期表中的 118 个元素执行此操作似乎很多。好吧,我可以做到,但我相信必须有更好、更简单的方法。

是否可以按照我的要求进行操作?谢谢。

最佳答案

您可以使用dict,而不是每个元素的类实例。(顺序并不重要,因为“字典”不保留顺序)该字典可以直接保存值,或者 Element 实例

elements = {
'Nitrogen': 14.01,
'Carbon': 12.0,
...
}

elements = {
'Nitrogen': Element('Nitrogen', 14.01),
...
}

那么你可以这样使用它:

element_name = input('Insert element name: ')
print('atomic mass:', elements[element_name])

注意:如果用户输入无效元素,这可能会引发KeyError,因此您可以添加错误检查

element_name = input('Insert element name: ')
try:
print('atomic mass:', elements[element_name])
except KeyError:
print('the element does not exist')

关于python - 通过用户输入访问类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929296/

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