How to create classes on Python?

python

Solution

Ah, welcome to the issue of python namespace verbosity.

Unlike Java, where if you have a class named Foo in a file Foo.java, your class is not automatically hoisted into the module namespace.

If you want this behavior, you will need to do:

from Alumno import Alumno

There are other difficult ways around this. If for example you have a directory:

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

You can do `from YourClass import YourClass` in `__init__.py`. Thus outside of the submodule, you can do `import submodule.YourClass` or `from submodule import YourClass` and get your desired behavior.

Problem

I'm learning the basics of python on classes and objects. I have created a basic class object with getters, setters and `__str__` function. ``` ''' 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 ``` And a python module that imports that class and initialize the object for print their info. ``` ''' Created on 02/06/2012 @author: rafael ''' from classes import * if __name__ == '__main__': alumno=Alumno("Juanito Perez","1234",2) print alumno ``` But I'm having a NameError Exception, so I must create my object in this way: ``` alumno=Alumno.Alumno(param,param,param) ``` But I want to be on this way: ``` alumno=Alumno(param,param,param) ``` Can someone explain to me how classes work or what I'm doing wrong?

Original source