다른 형식의 하위 클래스를 가져온 경우 기본 클래스의 생성자에서 목록에서 dict로 변경되는 방식을 이해하지 못합니다.수퍼 클래스의 유형을 변경
마법이란 무엇입니까?
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은() 속성 키()를 가지고 있겠지이 시도해야합니다 것을 보여 주지만,이 작품
입니다
변수는 파이썬에서 유형이 없습니다. 변수는 모든 유형의 객체를 가리키는 데 사용할 수 있습니다 :'x = 1; x = []; x = 'foo' '. –
[변경할 수있는 기본 인수를 사용하지 마십시오] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) 그렇지 않으면 다른 질문이 게시 될 수 있습니다. 한동안. :-) –