3

クラスとオブジェクトに関する python の基礎を学んでいます。

ゲッター、セッター、および__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)

クラスがどのように機能するか、または私が間違っていることを誰かに説明してもらえますか?

4

1 に答える 1

5

ああ、python 名前空間の冗長性の問題へようこそ。

ファイル Foo.java に Foo という名前のクラスがある場合、Java とは異なり、クラスはモジュールの名前空間に自動的に巻き上げられません。

この動作が必要な場合は、次のことを行う必要があります。

from Alumno import Alumno

これには他にも難しい方法があります。たとえば、ディレクトリがある場合:

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

from YourClass import YourClassでできます__init__.py。したがって、サブモジュールの外で、目的の動作を実行import submodule.YourClassまたはfrom submodule import YourClass取得できます。

于 2012-06-02T08:12:29.757 に答える