2016-07-07 2 views
0

목록을 초기화하고 모든 유형의 객체를 목록에 추가 할 Python 프로그램을 작성하려고합니다. 나는 내 __init__ 메서드에서 목록을 제대로 초기화했다고 생각하지만 어떤 객체도 .join() 메서드를 사용하여 전달할 수 없습니다. .append()이 객체 유형 str을 처리하지 않는 것 같아서 .join() 메서드를 선택했습니다.목록을 초기화하고 모든 유형의 객체를 파이썬에서 그 객체에 추가하는 방법

class Bag(object): 
    '''This is where the docstring goes.''' 

    def __init__(self): 
     self.contents = [] 

    def put_in_bag(self, contents): 
     contents.join(contents) 

    def __str__(self): 
     return "The bag has: " + str(self.contents) 

if __name__ == "__main__": 
    bag1 = Bag() 
    bag1.put_in_bag("comb") 
    bag1.put_in_bag("candy bar") 
    print bag1 

나는 다음과 같은 출력이 나타납니다

The bag has: []

이 대학 과정에 대한 숙제를하고 나는 경험 파이썬 프로그래머입니다. 꽤 직설적 인 것처럼 보이지만 분명히 뭔가 빠져 있습니다.

+3

파이썬 목록은 기본적으로 모든 유형을 저장할 수있는; 'append'는 실제로 당신이 원하는 것입니다. 여러분이 놓치고있는 큰 일은'put_in_bag' 메쏘드에 있습니다. 여러분은'self.contents'보다는 body에서'contents'를 참조하고 있습니다. 'self.contents.append (contents)'와 같은 것이'join'이 아니라' – Hamms

+0

'append'에서 작동해야합니다. – erip

답변

1

put_in_bag 메서드의 객체 인스턴스 (self)에있는 contents을 참조하고 있지 않습니다. 대신 당신은 인수 자체에 인수를 결합하려고하고 인스턴스를 전혀 건드리지 않으려 고합니다. 또한 joinlist에 대한 Python 메서드가 아닙니다. 단일 요소를 추가하기 때문에 append이 필요합니다. 전체 목록을 추가하려면 +=을 사용하십시오.

이 시도 :

class Bag(object): 
    '''This is where the docstring goes.''' 

    def __init__(self): 
     self.contents = [] 

    def put_in_bag(self, contents): 
     self.contents.append(contents) 

    def __str__(self): 
     return "The bag has: " + str(self.contents) 

if __name__ == "__main__": 
    bag1 = Bag() 
    bag1.put_in_bag("comb") 
    bag1.put_in_bag("candy bar") 
    print(bag1) 
관련 문제