如何在Python上创建类?

2024-06-16 09:49:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习python关于类和对象的基础知识。

我用getter、setter和__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

以及一个python模块,用于导入该类并初始化对象以打印其信息。

'''
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)

有人能给我解释一下上课的方式或我做错了什么吗?


Tags: 对象selfreturnparamondefauthorcreated
1条回答
网友
1楼 · 发布于 2024-06-16 09:49:44

啊,欢迎来到python名称空间冗长的问题。

与Java不同,如果在Foo.Java文件中有一个名为Foo的类,则类不会自动提升到模块名称空间中。

如果您想要此行为,则需要执行以下操作:

from Alumno import Alumno

还有其他困难的办法。例如,如果您有一个目录:

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

你可以在__init__.py中进行from YourClass import YourClass。因此,在子模块之外,您可以执行import submodule.YourClassfrom submodule import YourClass并获得所需的行为。

相关问题 更多 >