我不明白如何改變類型從列表到字典中的構造函數如果我有子類另一種類型 - 字典。改變超類的類型
這是什麼魔術?
class Adder:
def __init__(self, data = [ ]):
self.data = data
def __add__(self, other):
return "Not Implemented"
class DictAdder(Adder):
def __add__(self, y):
z = {}
for k in self.data.keys(): z[k] = self.data[k]
for k in y.keys(): z[k] = y[k]
return z
y = DictAdder({1:'a', 2:'b'})
l = y + { 3: 'c', 4: 'd'}
print(l)
和答案:
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Pycharm顯示什麼self.data.keys()不具有屬性鍵(),這必須是嘗試,因爲數據是一個列表,但這是工作
變量在Python中沒有類型。一個變量可以用來指向任何類型的對象:'x = 1; x = []; x ='foo''。 – 2014-11-22 21:21:07
同樣[不使用可變默認參數(http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument),否則你可能最終發佈的另一個問題等一下。 :-) – 2014-11-22 21:23:50