我在“健身房”环境中修改某人的代码,并偶然发现使用点符号来访问字典。下面的片段显示,健身房中的字典可以使用这个符号,但是当我复制它时,它会抛出一个错误。
import gym
env = gym.Env
env = make('connectx', debug=True)
config = env.configuration
print(config)
print(config.timeout)
dct = {'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
print(dct.timeout)这提供了以下输出:
{'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
5
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-45-674d59d34c55> in <module>
6 print(config.timeout)
7 dct = {'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
----> 8 print(dct.timeout)
AttributeError: 'dict' object has no attribute 'timeout'我在用Python 3,有人能解释一下吗?谢谢
发布于 2020-11-10 08:06:12
发布于 2020-02-20 10:55:56
在python中,不能使用dict.key访问字典值,需要使用dict[key]。
例子:
d = {"foo": 2}
print(d["foo"])
# 2
key = foo
print(d[key])
# 2
print(d.foo)
# AttributeError: 'dict' object has no attribute 'foo'
print(d.key)
# AttributeError: 'dict' object has no attribute 'key'如果您真的想使用点表示法,可以使用一个类(顺便说一句,您的config可能是一个类实例):
class MyClass():
def __init__(self):
self.foo = "bar"
a = MyClass()
print(a.foo)
# barhttps://stackoverflow.com/questions/60318238
复制相似问题