我創建了一個類,它的子類ConfigParser.SafeConfigParser來實現無節制的配置文件。我遇到的問題是,我得到一個意想不到的片型相比,回來我怎麼指望__getitem__
迴應:子類'__getitem__返回意外片
import ConfigParser
class foo(ConfigParser.SafeConfigParser):
def __getitem__(self, option):
return option
class bar(object):
def __getitem__(self,option):
return option
a = foo()
b = bar()
print a[:]
print b[:]
答覆我感到困惑,因爲我得到:
slice(0, 2147483647, None)
slice(None, None, None)
我本來期望在兩種情況下都是(None, None, None)
。我可以猜想它的行爲很熟悉 - 例如,我正在使用一個簡單的list()
切片動作 - 但這使得通過if option.start is None
確定用戶的意圖特別困難,在前一種情況下失敗。
哪一部分SafeConfigParser
正在改變這種行爲,我能做些什麼來接收的(None, None, None)
代替(0, sys.maxint, None)
我應該想到它與舊式類有關,因爲我痛苦地發現了'SafeConfigParser'多少次分類不關心'@ property'。我會看看Python 3的,也許它會引導我走向正確的方向 - 謝謝! – hexparrot