0

我正在阅读一些经验丰富的程序员编写的一些代码,但我不明白其中的某些部分。不幸的是,我是 Python 编程的新手。

这是让我感到困惑的代码行:

realworld = ConcreteRealWorldScheduler(RealWorldScenario(newscenario)).schedule()

概括地说,我将再次重写它

variable = OneConcreteClass(OneClass(anotherVariable)).method()

这部分最让我困惑:

(RealWorldScenario(newscenario))

如果有人能给我一个详尽的描述,那将非常有帮助。

谢谢

4

4 回答 4

4

这与以下内容相同:

# New object, newscenario passed to constructor
world_scenario = RealWordScenario(newscenario)
# Another new object, now world_scenario is passed to constructor
scheduler = ConcreteRealWorldScheduler(world_scenario)
# Call the method
variable = scheduler.method()
于 2013-10-23T14:18:40.930 回答
1

由于命名或类的复杂性,它可能看起来令人困惑,但这与以下内容基本相同:

foo = set(list('bar')).pop()

所以,在这个例子中:

  1. 首先 alist被实例化'bar'
    • list('bar') == ['b', 'a', 'r']
  2. 接下来从列表中创建一个集合
    • set(['b', 'a', 'r']) == {'a', 'b', 'r'}
  3. 然后我们使用set's 的pop()方法
    • {'a', 'b', 'r'}.pop()将返回'a'并保留set{'b', 'r'}

因此,您给定的代码行也是如此:

realworld = ConcreteRealWorldScheduler(RealWorldScenario(newscenario)).schedule()
  1. 首先一个 newRealWorldScenario被实例化newscenario
  2. 接下来,用实例ConcreteRealWorldScheduler实例化aRealWorldScenario
  3. 最后调用实例的schedule()方法。ConcreteRealWorldScheduler
于 2013-10-23T14:40:02.357 回答
0

在 Python 中,几乎所有东西都是Object

因此,当我们为对象创建实例时,我们会执行以下操作:

obj = ClassName()  # class itself an object of "Type"

or obj = ClassName(Args) # 这里 args 被传递给构造函数

如果你的班级有任何成员叫method()

你可以这样做:

obj.method()

或者

ClassName().method()
于 2013-10-23T14:28:26.427 回答
0

相反,从外部工作,我们有

variable = OneConcreteClass(OneClass(anotherVariable)).method()

或者

variable = SomethingConfusing.method()

我们得出的结论SomethingConfusing是一个对象,其方法名为method

我们还知道什么?嗯,真的

OneConcreteClass(OneClass(anotherVariable))

或者

OneConcreteClass(SomethingElseConfusing)

OneConreteClass因此是一个具体的类,它在其__init__方法中采用另一个对象,特别是OneClass已经初始化的类型OneClass(anotherVariable)

有关更多详细信息,请参阅潜入 python此处

于 2013-10-23T14:23:57.270 回答