Articles of métodos de

¿Por qué no puedo pasar yo mismo como un argumento con nombre a un método de instancia en Python?

Esto funciona: >>> def bar(x, y): … print x, y … >>> bar(y=3, x=1) 1 3 Y esto funciona: >>> class Foo(object): … def bar(self, x, y): … print x, y … >>> z = Foo() >>> z.bar(y=3, x=1) 1 3 E incluso esto funciona: >>> Foo.bar(z, y=3, x=1) 1 3 Pero ¿por qué no […]

Agregar atributos a los métodos de instancia en Python

Me gustaría agregar un atributo a un método de instancia en una de mis clases. Intenté la respuesta dada en esta pregunta , pero esta respuesta solo funciona para las funciones, por lo que puedo decir. Como ejemplo, me gustaría poder hacer algo como: class foo(object): … def bar(self): self.bar.counter += 1 return self.bar.counter bar.counter […]

a == b es falso, pero id (a) == id (b) es verdadero?

Se topó con lo siguiente: >>> class A: … def __str__(self): … return “some A()” … >>> class B(A): … def __str__(self): … return “some B()” … >>> print A() some A() >>> print B() some B() >>> A.__str__ == B.__str__ False # seems reasonable, since each method is an object >>> id(A.__str__)==id(B.__str__) True # […]

¿Puede un método dentro de una clase ser generador?

¿Es aceptable / Pythonic usar un método en una clase como generador? Todos los ejemplos que he encontrado muestran la statement de rendimiento en una función, no en una clase. Aquí hay un ejemplo de código de trabajo: class SomeClass(object): def first_ten(self): for i in range(10): yield i def test(self): for i in self.first_ten(): print […]

Establecer una propiedad dentro de un método de Python

Quiero establecer un atributo de solo lectura dentro de un método de clase. Ya he intentado esto: class Foo(object): def __init__(self, v): self._set(‘_v’, v) def _set(self, attr, v): setattr(self, attr, v) setattr(Foo, attr[1:], property(lambda self: getattr(self, attr))) pero es horrible ¿Hay otra manera? Lo que necesito hacer es establecer la propiedad: class Foo(object): def __init__(self, […]

¿Una forma sencilla de anular los métodos predeterminados en las clases personalizadas de Python?

Tengo una clase llamada celular: class Cell: def __init__(self, value, color, size): self._value = value self._color = color self._size = size # and other methods… Cell._value almacenará una cadena, un entero, etc. (para lo que esté usando ese objeto). Quiero que todos los métodos predeterminados que normalmente usarían el “valor” de un objeto usen el […]

python3: enlace del método a la instancia de clase con .__ get __ (), funciona, pero ¿por qué?

Sé que si desea agregar un método a una instancia de clase no puede hacer una tarea simple como esta: >>> def print_var(self): # method to be added print(self.var) >>> class MyClass: var = 5 >>> c = MyClass() >>> c.print_var = print_var esto de hecho causaría que print_var comportara como una función normal, por […]

súper confuso Python herencia múltiple super ()

Estaba jugando con la herencia múltiple en Python y me encuentro con una situación que no puedo entender cómo sucedió. Aquí está el diseño de la herencia: AF / \ | BC | \ | / \ | / D El diamante ABCD que todo el mundo conoce. Además de una clase extra “F”, la […]

Python: la función como atributo de clase se convierte en un método enlazado

Noté que si defino un atributo de clase igual a una función cuando creo una instancia de esa clase, el atributo se convierte en un método enlazado. ¿Puede alguien explicarme la razón de este comportamiento? In [9]: def func(): …: pass …: In [10]: class A(object): ….: f = func ….: In [11]: a = […]

Método dependiente del contexto en Python: ¿qué estoy haciendo mal?

Me gustaría crear una clase cuyo método f dependa del “modo” en que se ha creado el objeto de la clase. El código de abajo no funciona, pero espero que te haga una idea de lo que estoy tratando de hacer. Mi idea es tener un diccionario en el que defino los ajustes para cada […]