Articles of oop

Subclasificar una clase con miembros privados

Una de las cosas realmente buenas de python es la simplicidad con la que puede nombrar variables que tienen el mismo nombre que el descriptor de acceso: self.__value = 1 def value(): return self.__value ¿Hay una forma sencilla de proporcionar acceso a los miembros privados de una clase que deseo subclasificar? A menudo deseo simplemente […]

Problema con la jerarquía de clases de python

Tengo una jerarquía de clases: class ParentClass: def do_something(self): pass # child classes have their own implementation of this class ChildClass1(ParentClass): def do_something(self): class ChildClass2(ParentClass): def do_something(self, argument_x): class ChildClass3(ParentClass): def do_something(self, argument_y): Hay dos problemas aquí: El método do_something () tiene diferentes interfaces en las subclases: acepta un argumento en las clases secundarias 2 […]

Variable de paso de Python entre clases

Estoy tratando de crear un asistente de generación de personajes para un juego. En una clase calculo los atributos del personaje. En una clase diferente, le muestro al usuario qué especialidades están disponibles según los atributos del personaje. Sin embargo, no recuerdo cómo pasar variables entre diferentes clases. Aquí hay un ejemplo de lo que […]

Cómo llamar a la función global desde el método de clase

Tengo el siguiente código: def __static_func(name): print ‘Name = ‘ + name class A: def __init__(self, name): self.name = name def fun(self): __static_func(self.name) a = A(‘foo’) a.fun() Cuando se lanza en Python 2.7, produce NameError: global name ‘_A__static_func’ is not defined Entonces, la pregunta es ¿cómo invoco la función global desde el método de clase?

Método de llamada desde la cadena

Si tengo una clase de Python, y me gustaría llamar a una función desde una variable dependiendo de una variable, ¿cómo lo haría? Me imaginé que lo siguiente podría hacerlo: class CallMe: # Class def App(): # Method one … def Foo(): # Method two … variable = “App” # Method to call CallMe.variable() # […]

¿Mala práctica para ejecutar código en el constructor que es probable que falle?

mi pregunta es más bien una pregunta de diseño En Python, si el código en su “constructor” falla, el objeto no se definirá. Así: someInstance = MyClass(“test123”) #lets say that constructor throws an exception someInstance.doSomething() # will fail, name someInstance not defined. Sin embargo, tengo una situación en la que se producirá una gran cantidad […]

¿Herencia y clases internas en Python?

En el siguiente código, la clase B ha heredado el atributo yay de la clase A , esperaba esto. También espero que la clase interna B.Foo comporte de la misma manera pero no lo hace. ¿Cómo hacer B.Foo para heredar el atributo alice de la clase A ? Necesito que la subclase interna Foo en […]

¿Qué es una clase de hermanos en Python?

La documentación de Python 2 dice que la función super () “devuelve un objeto proxy que delega las llamadas de método a una clase de tipo padre o hermana”. Las preguntas: ¿Qué es una clase de hermanos en Python? ¿Cómo delegas una llamada de método a una clase de hermanos? Mi presunción era que un […]

¿Por qué los métodos de instancia se pueden llamar como métodos de clase en Python 3?

Considere la siguiente clase: class Foo(object): def bar(self): print(self) En Python 2 (2.7.13), llamar a bar() como método de clase genera una excepción: >>> Foo.bar(‘hello’) Traceback (most recent call last): File “”, line 1, in TypeError: unbound method bar() must be called with Foo instance as first argument (got str instance instead) >>> Foo.bar() Traceback […]

Escogiendo entre módulos y clases.

En mi aplicación, tengo que mantener el estado de la aplicación global y los métodos globales de la aplicación como los usuarios actualmente conectados, el número total de respuestas, crear un archivo de configuración de la aplicación, etc. Hay dos opciones: Cree un archivo appstate.py separado con variables globales con funciones sobre ellas. Se ve […]