2012-11-13 3 views
-1

나는 스스로 학습하는 파이썬을 시작했고, C#과 자바를 알고 있지만 파이썬 언어는 지금 당장 나를 조금 이상하게 만든다. 나는 작은 전화 번호부 프로그램을 만들고 싶다.파이썬에서 클래스 목록 만들기

목록에있는 각 구성원이 entery라는 클래스의 전화 번호부 목록을 만들고 싶습니다. 각 entery에는 여러 문자열과 전화 번호 문자열 목록이 있습니다. 예를 들면 :

class entery: 
    def addEntery (str1,str2,list): 
     tmp = entery() 
     tmp.str1 = str1 
     tmp.str2 = str2 
     tmp.list = list 

def main(): 
    phonebook = [] 
    phonebook.append(addEntery('ian1','ian2',list) 

내가 파이썬에 C에서 # 내가 가지고있는 격차를하고 간단한 작업을위한 클래스를 만드는 데 도움이 필요합니다.

+4

당신은 문제가 있다고 말하면되지만 그것이 무엇인지 말해주지 않습니까? 오류가 있습니까? 예상대로 작동하지 않습니까? –

답변

3

적절한 생성자를 정의하지 않았습니다. 그것은해야한다 : 파이썬은 "개인"데이터를 가지고 있지 않기 때문에

class Entery(object): 
    def __init__(self, str1, str2, str3): 
    self.str1 = str1 
    self.str2 = str2 
    self.str3 = str3 

, 직접 "외부"에서 각 필드에 액세스 할 수 있습니다

>>> test = Entery("a", "b", "c") 
>>> print test.str1 
a 

는 그런 다음에 의해 목록을 구축 할 수 있습니다 phonebook은 인스턴스 목록, 객체 즉, 목록, 아니다 : 이것은 매우 중요하다

phonebook.append(Entery("one", "two", "three")) 
phonebook.append(Entery("four", "five", "six")) 

: 생성자를 호출하면 인스턴스를 구축 "클래스 목록". 물론 수업을 목록에 넣는 것도 가능하지만, 그것이 여러분이하는 것이 아닙니다.

아마도 기본 Python 클래스 자습서를 읽는 것에 더 중점을 두어야 할 것입니다. 또한 클래스 이름을 지정할 때 찾고있는 단어는 아마도 Entry입니다.

+0

thx ... 나는 전화 번호부 [0] .str1 같이 각 entery에있는 str에 직접 갈 수 있는가? – Iakovl

+0

@Iakovl : 가능합니다. 당연히 너는 너 자신을 위해 그것을 보려고 노력했을 수도있다. – martineau

0

append 메소드에서 오류의 원인이되는 닫는 괄호가 누락되었습니다. 또한, 파이썬에서 클래스에 속하는 모든 함수는 함수 시그니처에서 self에 대한 참조를 가져야합니다. 클래스를 간단한 생성자로 축소 할 수도 있습니다.

class Entery: 
    def __init__(self, str1, str2, str3): 
     self.str1 = str1 
     self.str2 = str2 
     self.str3 = str3 

phonebook = [] 
phonebook.append(Entery('ian1','ian2',list)) 
print phonebook[0].str1