Está bien hacer referencia al nombre de la clase dentro de su cuerpo (como dentro de las definiciones de métodos) si está realmente dentro del alcance ... Lo cual será si está definido en el nivel superior. (En otros casos, probablemente no, debido a las peculiaridades del alcance de Python).
Para el ejemplo de la Gotcha alcance, tratan de crear una instancia de Foo:
class Foo(object):
class Bar(object):
def __init__(self):
self.baz = Bar.baz
baz = 15
def __init__(self):
self.bar = Foo.Bar()
(. Se va a quejarse por el nombre global 'Bar' no está definido)
Además, algo me dice que es posible que desee buscar en los métodos de clase: docs on the classmethod function (para ser utilizado como decorador), a relevant SO question. Edit: Ok, entonces esta sugerencia puede no ser apropiada en absoluto ... Es solo que lo primero que pensé al leer su pregunta fue cosas como constructores alternativos, etc. Si algo más simple se ajusta a sus necesidades, manténgase alejado de @classmethod
rareza . :-)
No está claro lo que quiere o quiere decir. 'clase A:' no crea un objeto, por lo que no hay 'A' para referirse. Vea las soluciones presentadas para las posibles cosas que podría haber querido decir ... –
@Andrew __class A: __ crea un _class object_ como las clases en python son de primera clase –