这里是我的课吧:如何使用非默认参数的值作为Python中默认参数的默认值?
class Bar:
def __init__(self, start, end, open, volume, high=open, low=open, last=open):
self.start = start
self.end = end
self.open = open
self.high = high
self.low = low
self.last = last
self.volume = int(volume)
def __str__(self):
return self.start.strftime("%m/%d/%Y\t%H:%M:%S") + "\t" + self.end.strftime("%H:%M:%S") + "\t" +str(self.open) + "\t" + str(self.high) + "\t" + str(self.low) + "\t" + str(self.last) + "\t" + str(self.volume)
1)我想初始化高,低,最后因为种种开放的。这是正确的方法吗?
2)当我这样做印刷(STR(巴))我得到有趣的输出,如...
03/13/2012 12:30:00 13:30:00 138.91 <built-in function open> 138.7 <built-in function open> 13177656
我不会使用'_open',因为它将变量指定为“受保护”。我认为当你想避免关键字时(我会扩展以避免内建阴影),执行'open_'的习惯稍微习惯一些。否则,很好的答案(+1) – mgilson 2012-08-03 13:31:17
这就是我正在考虑的惯例。我会更新。 – chepner 2012-08-03 13:32:42
在这种情况下,由于变量被立即分配给实例属性'self.open',所以*可能无关紧要。但是,我想即使是常规参数也可以用'argname = value'语法来调用,所以在这种情况下它会产生(小)差异。 – mgilson 2012-08-03 13:35:31