我是编程新手,并且一直在研究一些代码来了解OOP.Here是我理解并需要帮助的, 1)import gym和env = gym.make('String'):这意味着健身房是一个图书馆,而make是一个类吗?我们创建了一个对象实例吗?
我理解类包含其中的方法..函数..但在这种情况下我无法清楚地解读。这个env.monitor.start()之后的行...这包含3个部分......每个部分是什么指示..我认为env是早先实例化的对象。
import gym
env = gym.make('CartPole-v0')
env.monitor.start('/tmp/cartpole-experiment-1',force=True)
for i_episode in range(20):
observation = env.reset()
for t in range(1009):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
env.monitor.close()
感谢您的帮助,如果问题很愚蠢,请道歉
答案 0 :(得分:0)
以下是上述程序的基本结构:
import
语句将模块带入程序。这些模块包含功能。该模块能够使用这些功能。例如,
import myMod as mM
mM.fooFunc()
导入模块myMod
并为其指定别名mM
。 fooFunc
属于模块内部,因此我们可以调用它。
我们不需要别名。我们也可以说
import myMod
myMod.fooFunc()
但它稍微不方便。
env
只是函数gym.make('CartPole-v0')
的返回值的名称。函数总是返回一些东西,例如实际对象,整数类型(如整数或字符串)或None
。
不需要始终存储返回值,例如env.monitor.start('/tmp/cartpole-experiment-1',force=True)
。它只是执行一些数据操作。
至于程序的其余部分,它由for-loop
和if
语句运行。 Read about it here
答案 1 :(得分:0)
gym
可以是包或模块。没有办法通过其import语句告诉它是什么。
env = gym.make('CartPole-v0')
可以将函数make
的调用的返回值从gym
分配给变量env
,也可以创建类make
的项目和将该项目分配给变量env
env.monitor.start('/tmp/cartpole-experiment-1',force=True)
表示env
变量最有可能返回一个具有属性/子类monitor
的类的项。该属性/子类拥有一个名为start
env
很可能还有一个带有函数action_space
的子类/属性sample
答案 2 :(得分:0)
gym.make(' CartPole-v0')返回一个对象。
因此,' env' 是对象。
' ENV'包含一个属性' monitor' ,它也是对象。
' start' 方法是'监视器'的一种方法。对象,而不是 env对象。
env = gym.make('CartPole-v0')
env.monitor.start('/tmp/cartpole-experiment-1',force=True)
写它的另一种方法是(env.monitor).start(' / tmp / cartpole-experiment-1',force = True)
为了重复,
env.reset()
#env is object, reset is method of env object
env.render()
#env is object, render is method of env object
env.action_space.sample()
#env is object, action_space is object, sample is method of action_space object
env.step(action)
#env is object, step is method of env object
答案 3 :(得分:-1)
gym
可以是包或模块。 import
语句并未告诉您gym
是什么。
gym.make意味着您正在调用一种名为“生成”的方法。从健身房。
env
然后make('CartPole-v0')
返回,这可能是也可能不是对象。它有一个似乎可以启动的监视器属性,方法monitor.start()
,所以我猜它是,但你不知道这个,而不看健身房的代码或致电{ {1}}。
type(env)
表示调用env.monitor.start()
的start方法。如果不查看健身房的代码,就无法确定env.monitor
的内容。