代码研究 - 编程新

时间:2016-07-25 12:56:50

标签: python class libraries

我是编程新手,并且一直在研究一些代码来了解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()

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

4 个答案:

答案 0 :(得分:0)

以下是上述程序的基本结构:

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

import myMod as mM

mM.fooFunc()

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

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

import myMod
myMod.fooFunc()

但它稍微不方便。

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

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

至于程序的其余部分,它由for-loopif语句运行。 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 的内容。