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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With