2012-06-02 4 views
2

저는 클래스와 객체에 대한 파이썬의 기초를 배우고 있습니다.Python에서 클래스를 만드는 방법은 무엇입니까?

getters, setters 및 __str__ 기능을 사용하여 기본 클래스 개체를 만들었습니다.

''' 
Created on 02/06/2012 

@author: rafael 
''' 

class Alumno(object): 
    ''' 
    Esta clase representa a un alumno de la ibero 
    ''' 
    __nombre=None 
    __idAlumno=None 
    __semestre=0 

    def __init__(self,nombre,idAlumno,semestre): 
     ''' 
     Constructor 
     ''' 
     self.__nombre=nombre 
     self.__idAlumno=idAlumno 
     self.__semestre=semestre 

    def Alumno(self): 
     return self 

    def getId(self): 
     return self.__idAlumno 
    def setId(self,idAlumno): 
     self.__idAlumno=idAlumno 
    def getNombre(self): 
     return self.__nombre 
    def setNombre(self,nombre): 
     self.__nombre=nombre 
    def getSemestre(self): 
     return self.__semestre 
    def setSemestre(self,semestre): 
     self.__semestre=semestre 

    def __str__(self): 
     info= "Alumno: "+self.getNombre()+" - id: "+self.getId()+" - Semestre:"+str(self.getSemestre()) 
     return info 

그리고 그 클래스를 가져 와서 정보를 인쇄하기위한 객체를 초기화하는 파이썬 모듈.

''' 
Created on 02/06/2012 

@author: rafael 
''' 
from classes import * 

if __name__ == '__main__': 
    alumno=Alumno("Juanito Perez","1234",2) 
    print alumno 

는하지만 내가 나가서 설명하자면 NameError 예외가 있어요, 그래서 나는 이런 식으로 내 개체를 만들어야합니다

alumno=Alumno.Alumno(param,param,param) 

하지만이 방법에 할 것을 권장합니다

alumno=Alumno(param,param,param) 

수 누군가가 수업이 어떻게 작동하는지 또는 내가 뭘 잘못하고 있는지 설명해 주시겠습니까?

+2

왜 getter/setters를 사용하고 있습니까? 그것은 전혀 pythonic 아니에요! 멤버 변수를 사용하고 getter/setter 로직이 필요한 경우 액세스 할 때 getter/setter 함수를 자동으로 호출하는 멤버 변수 인 * 속성 *을 만듭니다. – ThiefMaster

+0

'def alumno (self) : return self' !??????? 파이썬 방법을 배울 필요가 있습니다. 파이썬은 자바가 아닙니다. –

+1

흠 "내가 배우고있다"는 것을 이해하지 못한다 ... 나는 단지 새로운 언어를 배우려고 노력하고있다. 투표를위한 이유는 아니다 .. – rafuru

답변

4

아, 파이썬 네임 스페이스 상세 표시에 오신 것을 환영합니다.

Java와 달리, Foo라는 이름의 클래스에 Foo.java라는 클래스가있는 경우 클래스는 모듈 네임 스페이스에 자동으로 올라가지 않습니다. 이 동작을 원하는 경우

, 당신이 할 필요가있을 것이다 :이 주변의 다른 어려운 방법이 있습니다

from Alumno import Alumno 

. 예를 들어 당신이 디렉토리가있는 경우 :

package/ 
    ... 
     submodule/ 
      YourClass.py 
      YourClass2.py 
      __init__.py 

당신은 __init__.pyfrom YourClass import YourClass을 할 수 있습니다. 따라서 서브 모듈 외부에서 import submodule.YourClass 또는 from submodule import YourClass을 수행하고 원하는 동작을 얻을 수 있습니다.

+0

답변 해 주셔서 감사합니다. : D ... hmm 패키지에 2 개 또는 많은 모듈이 있다면? 클래스 1과 클래스. 클래스 2 ... 각각 하나씩 가져와야합니다. – rafuru

+0

... 그런 식으로하지 마십시오. 그건 당신이 파이썬에서해야 할 일이 아닙니다. –

+0

@rafuru - Alumno.py에 Class1과 Class2가있는 경우 "Alumno import Class1, Class2"를 수행 할 수 있습니다. 또는 "Alumno"를 가져와 "Alumno.Class1"과 "Alumno.Class2" –

관련 문제