我正在阅读一些有经验的程序员编写的代码,我不明白它的某些部分。不幸的是,我是Python编程的新手。
这是令我困惑的代码行:
realworld = ConcreteRealWorldScheduler(RealWorldScenario(newscenario)).schedule()
概括我会再次重写
variable = OneConcreteClass(OneClass(anotherVariable)).method()
这部分最让我困惑的是:
(RealWorldScenario(newscenario))
如果有人能给我一个详尽的描述,那将非常有用。
谢谢
答案 0 :(得分: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()
答案 1 :(得分:1)
由于命名或类的复杂性,它可能看起来令人困惑,但这基本上与以下内容相同:
foo = set(list('bar')).pop()
所以,在这个例子中:
list
实例化'bar'
list('bar') == ['b', 'a', 'r']
set(['b', 'a', 'r']) == {'a', 'b', 'r'}
set
的{{1}}方法
pop()
将返回{'a', 'b', 'r'}.pop()
并将'a'
保留为set
对于您给定的代码行也是如此:
{'b', 'r'}
realworld = ConcreteRealWorldScheduler(RealWorldScenario(newscenario)).schedule()
RealWorldScenario
newscenario
实例ConcreteRealWorldScheduler
RealWorldScenario
实例的schedule()
方法。答案 2 :(得分:0)
从外部工作,我们有
variable = OneConcreteClass(OneClass(anotherVariable)).method()
或
variable = SomethingConfusing.method()
我们得出结论SomethingConfusing
是一个名为method
我们还知道什么? 嗯,这真的是
OneConcreteClass(OneClass(anotherVariable))
或
OneConcreteClass(SomethingElseConfusing)
因此, OneConreteClass
是一个具体的类,它在__init__
方法中采用另一个对象,特别是类型为OneClass
的已用OneClass(anotherVariable)
有关详细信息,请参阅Dive into python或here
答案 3 :(得分:0)
在Python中,几乎所有内容都是Object
所以当我们为对象创建实例时,我们会这样做:
obj = ClassName() # class itself an object of "Type"
或 obj = ClassName(Args)#这里args被传递给构造函数
如果您的班级有任何名为method()
的成员
你可以这样做:
obj.method()
或
ClassName().method()