代码学习-编程新手

Code Study-New to programming

我是编程新手,一直在研究一些代码以了解 OOP.Here 是我所理解并需要帮助的, 1) import gym and env=gym.make('String') :意思是gym是一个库,而make是它下面的一个class?我们创建对象实例了吗?

我知道 classes 包含其中的方法..即函数..但在这种情况下我无法破译此 env.monitor.start() 之后的 clearly.The 行..这包含 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()

感谢您的帮助,如果问题愚蠢,请道歉

gym 可以是包或模块。 import 语句不会告诉您 gym 是什么。

gym.make 表示您正在从 gym 调用一个名为 'make' 的方法。

env 那么 make('CartPole-v0') returns 可能是也可能不是对象。它有一个似乎可以启动的监视器属性,从方法 monitor.start(),所以我猜它是,但如果不查看 gym 的代码或调用 type(env) 就无法知道这一点.

env.monitor.start()表示调用了env.monitor开始的方法。 env.monitor是什么不看gym的代码就不能确定

上面程序的基本结构如下:

import 语句将模块引入程序。这些模块包含函数。该模块能够使用这些功能。例如,

import myMod as mM

mM.fooFunc()

导入模块 myMod 并为其指定别名 mMfooFunc 属于模块内部,因此我们可以调用它。

我们不需要别名。我们也可以直接说

import myMod
myMod.fooFunc()

不过稍微有点不方便

env 只是函数 gym.make('CartPole-v0') 的 return 值的名称。函数总是 return 某些东西,例如实际对象、整型(如整数或字符串)或 None.

return值不需要一直存储,比如env.monitor.start('/tmp/cartpole-experiment-1',force=True)。它只是执行一些数据操作。

至于程序的其余部分,它是 运行 by for-loops 和 if 语句。 Read about it here.

gym可以是包或模块。无法通过其导入语句来判断它是什么。

env = gym.make('CartPole-v0') 可以将调用函数 make 的 return 值从 gym 分配给变量 env,或者创建一个 class make 并将该项目分配给变量 env

env.monitor.start('/tmp/cartpole-experiment-1',force=True) 表示 env 变量最有可能 return 编辑了 class 的一个项目,该项目有一个名为 monitor 的 property/subclass。这个 property/subclass 拥有一个名为 start

的函数

env 很可能也有一个 subclass/property action_space 函数 sample

gym.make('CartPole-v0') returns 一个对象。

因此,'env'是一个对象

'env'包含一个属性,'monitor',也是一个对象

'start'方法是'monitor'对象的方法,不是环境对象。

    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