Articles of oop

¿Cómo subclase la clase de figura de matplotlib?

Estoy tratando de agregar algunos comportamientos y propiedades personalizados a mis figuras, pero estoy teniendo problemas para decidir un enfoque efectivo (y Pythonic). Mi primer impulso es simplemente matplotlib.figure.Figure subclase matplotlib.figure.Figure pero no puedo encontrar la forma de lograrlo: generalmente creo nuevas figuras y comienzo mi trazado con algo como fig, ax = matplotlib.pyplot.subplots() y […]

Python: orden de resolución de métodos de objetos de estilo antiguo (o clásico) y de estilo nuevo

He leído mucho sobre Objetos en la documentación de Python que diferencia estos dos en algún punto como: Las instancias de estilo antiguo, independientemente de su clase, se implementan con un solo tipo integrado, llamado instancia. Una clase de nuevo estilo es ni más ni menos que un tipo definido por el usuario. ¿Podría alguien […]

Python: Cómo llamar a un método de instancia desde un método de clase de la misma clase

Tengo una clase de la siguiente manera: class MyClass(object): int = None def __init__(self, *args, **kwargs): for k, v in kwargs.iteritems(): setattr(self, k, v) def get_params(self): return {‘int’: random.randint(0, 10)} @classmethod def new(cls): params = cls.get_params() return cls(**params) Y me gustaría poder hacer: >>> obj = MyClass.new() >>> obj.int # must be defined 9 Quiero […]

Python: ¿cuál es la mejor manera de llamar al método de la superclase?

Todo el tiempo que he estado usando: SuperClass.__init__(self, *args, **kwargs) Mi razón es que esto muestra explícitamente qué superclase se usa, especialmente en el caso de herencia múltiple. Sin embargo, otros códigos que encontré de uso super(MyClass, self).__init__(*args, **kwargs) en lugar. Esto podría volverse ambiguo cuando se usa en: class MyClass(SuperClass1, SuperClass2): def __init__(self, *args, […]

Función de manipulación de nombres de Python

¿Existe una función en la biblioteca estándar de Python para reproducir el esquema de manipulación de nombres de Python con un nombre de atributo “privado”? Parece que habría, pero no puedo encontrarlo para mi vida. Escribí esto, pero si hay una mejor manera, soy todo oídos. def mangle_name (cls, attrname) : prefix = ‘_’ + […]

Python – ¿Puedo acceder al objeto que me llama?

Si tengo esto: class A: def callFunction(self, obj): obj.otherFunction() class B: def callFunction(self, obj): obj.otherFunction() class C: def otherFunction(self): # here I wan’t to have acces to the instance of A or B who call me. … # in main or other object (not matter where) a = A() b = B() c = C() […]

Python objeto de clase vacío

Estoy enseñando una clase de python sobre Progtwigción Orientada a Objetos y, al repasar cómo explicar las Clases, vi una definición de clase vacía: class Employee: pass El ejemplo continúa para definir un nombre y otros atributos para un objeto de esta clase: john = Employee() john.full_name = “john doe” ¡interesante! Me pregunto si hay […]

¿Confundido acerca de las clases en Learn Python the Hard Way ex43?

Estoy confundido sobre cómo las clases de Mapa y Motor trabajan juntas para ejecutar este juego tipo Adventureland (código completo aquí: http://learnpythonthehardway.org/book/ex43.html ). Creo que entiendo lo que está sucediendo en la clase Map, pero estoy realmente confundido acerca de lo que está sucediendo en Engine () y por qué se necesita la variable scene_map. […]

Python equivalente de Ruby ‘method_missing’

¿Cuál es el equivalente de Python del método de method_missing método de Ruby? Intenté usar __getattr__ pero este enganche se aplica también a los campos. Solo quiero interceptar las invocaciones del método. ¿Cuál es la forma Python de hacerlo?

Python: todas las variables miembro deben inicializarse en __init__

Tal vez esto sea más una pregunta de estilo que una técnica, pero tengo una clase de python con varias variables miembro y quiero que funcione para que algunas de las variables miembro se inicialicen cuando el usuario crea una instancia de la clase (es decir, en la función __init__ ) y quiero que las […]