Articles of clase método

Llamando a un método de clase de clase base en Python

Considere el siguiente código: class Base(object): @classmethod def do(cls, a): print cls, a class Derived(Base): @classmethod def do(cls, a): print ‘In derived!’ # Base.do(cls, a) — can’t pass `cls` Base.do(a) if __name__ == ‘__main__’: d = Derived() d.do(‘hello’) > $ python play.py > In derived! > msg Desde Derived.do , ¿cómo llamo a Base.do ? […]

__getattr__ para variables estáticas / de clase en python

Tengo una clase como: class MyClass: Foo = 1 Bar = 2 Siempre que se invoca MyClass.Foo o MyClass.Bar , necesito que se invoque un método personalizado antes de que se devuelva el valor. ¿Es posible en Python? Sé que es posible si creo una instancia de la clase y puedo definir mi propio método […]

Python noob no puede hacer que el método de clase funcione

Tengo un método en mi clase de Customer llamado save_from_row() . Se parece a esto: @classmethod def save_from_row(row): c = Customer() c.name = row.value(‘customer’, ‘name’) c.customer_number = row.value(‘customer’, ‘number’) c.social_security_number = row.value(‘customer’, ‘social_security_number’) c.phone = row.value(‘customer’, ‘phone’) c.save() return c Cuando bash ejecutar mi script, obtengo esto: Traceback (most recent call last): File “./import.py”, line […]

Use el método de clase heredado dentro de __init__

Tengo una clase para padres que es heredada por varios hijos. Me gustaría inicializar uno de los hijos utilizando los inicializadores @classmethod los padres. ¿Cómo puedo hacer esto? Lo intenté: class Point(object): def __init__(self,x,y): self.x = x self.y = y @classmethod def from_mag_angle(cls,mag,angle): x = mag*cos(angle) y = mag*sin(angle) return cls(x=x,y=y) class PointOnUnitCircle(Point): def __init__(self,angle): […]

¿Qué es un ejemplo de caso de uso para un método de clase Python?

He leído ¿Para qué sirven los métodos de clase en Python? Pero los ejemplos en ese post son complejos. Estoy buscando un ejemplo claro, simple y escueto de un caso de uso particular para los métodos de clase en Python. ¿Puede nombrar un caso de uso de ejemplo pequeño y específico donde un método de […]

¿Por qué un súper argumento de un método de clase necesita un segundo argumento?

Esto funciona como se esperaba: >>> class Foo(object): … @classmethod … def hello(cls): … print ‘hello, foo’ … >>> class Bar(Foo): … @classmethod … def hello(cls): … print ‘hello, bar’ … super(Bar, cls).hello() … >>> b = Bar() >>> b.hello() hello, bar hello, foo También puedo llamar explícitamente a la clase base: >>> class Bar(Foo): […]

¿El mismo nombre para classmethod y instancemethod?

Me gustaría hacer algo como esto: class X: @classmethod def id(cls): return cls.__name__ def id(self): return self.__class__.__name__ Y ahora llame a id() para la clase o una instancia de ella: >>> X.id() ‘X’ >>> X().id() ‘X’ Obviamente, este código exacto no funciona, pero ¿hay una manera similar de hacerlo funcionar? ¿O cualquier otra solución para […]

¿Cómo hacer una propiedad de clase?

En Python puedo agregar un método a una clase con el decorador @classmethod . ¿Hay un decorador similar para agregar una propiedad a una clase? Puedo mostrar mejor de lo que estoy hablando. class Example(object): the_I = 10 def __init__( self ): self.an_i = 20 @property def i( self ): return self.an_i def inc_i( self […]

Varios errores en el código que intenta llamar a classmethods

Tengo este codigo class SomeClass: @classmethod def func1(cls,arg1): #—Do Something— @classmethod def func2(cls,arg1): #—Do Something— # A ‘function map’ that has function name as its keys and the above function # objects as values func_map={‘func1′:func1,’func2’:func2} @classmethod def func3(cls,arg1): # following is a dict(created by reading a config file) that # contains func names as keys […]

¿Significado de @classmethod y @staticmethod para principiante?

¿Podría alguien explicarme el significado de @classmethod y @staticmethod en python? Necesito saber la diferencia y el significado. Según tengo entendido, @classmethod le dice a una clase que es un método que debe heredarse en subclases, o … algo. Sin embargo, ¿cuál es el punto de eso? ¿Por qué no definir el método de la […]