【发布时间】:2013-06-19 21:28:31
【问题描述】:
我刚刚意识到在 Kivy 中使用with Python 语句添加顶点指令的方式有些神秘(至少对我而言)。例如,with 的使用方式是这样的:
... some code
class MyWidget(Widget)
... some code
def some_method (self):
with self.canvas:
Rectangle(pos=self.pos, size=self.size)
一开始我以为只是我偶尔使用的with Python语句。但突然间我意识到事实并非如此。通常看起来更像这样(示例取自here):
with open('output.txt', 'w') as f:
f.write('Hi there!')
在实例之后通常有一个as 以及对象的类似和别名。在 Kivy 示例中,我们没有定义和别名,这仍然可以。但令我困惑的部分是指令 Rectangle 仍然与 self.canvas 相关联。在阅读了with 声明之后,我非常确信 Kivy 代码应该写成这样:
class MyWidget(Widget)
... some code
def some_method (self):
with self.canvas as c:
c.add (Rectangle(pos=self.pos, size=self.size))
我假设在内部方法 add 是被调用的方法。假设基于我们可以简单地添加带有self.add (Rectangle(pos=self.pos, size=self.size))的矩形
我是否遗漏了有关 with Python 语句的内容?或者这是 Kivy 实现的某种东西?
【问题讨论】: