Articles of constructor de

¿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 […]

El método de clase como constructor y herencia.

El problema es bastante simple. Si una clase B hereda una clase A y quiere anular un “método de clase” que se utiliza como constructor (supongo que lo llama un “método de fábrica”). El problema es que B.classmethod querrá reutilizar A.classmethod , pero luego tendrá que crear una instancia de la clase A, mientras que […]

Obteniendo NameError al llamar a la función en el constructor

Ejecuté el siguiente código, llamando a la función en el constructor Primero — >>> class PrintName: … def __init__(self, value): … self._value = value … printName(self._value) … def printName(self, value): … for c in value: … print c … >>> o = PrintName(‘Chaitanya’) C h a i t a n y a Una vez más […]

Herencia Python simple

class Animal(object): def __init__(self, nlegs=4): print ‘__init__ Animal’ self.nlegs = nlegs class Cat(Animal): def __init__(self, talk=’meow’): print ‘__init__ Cat’ self.talk = talk class Dog(Animal): def __init__(self, talk=’woof’): print ‘__init__ Dog’ self.talk = talk ¿Por qué mi gato tom = Cat() no tiene un atributo nlegs? ¿Deberíamos llamar explícitamente a Animal.__init__() desde Cat.__init__ , o deberíamos […]

Cómo definir propiedades en __init__

Deseo definir propiedades en una clase desde una función miembro. A continuación se muestra un código de prueba que muestra cómo me gustaría que esto funcione. Sin embargo no consigo el comportamiento esperado. class Basket(object): def __init__(self): # add all the properties for p in self.PropNames(): setattr(self, p, property(lambda : p) ) def PropNames(self): # […]

Configuración automática de variables de miembros de clase en Python

Oye, tengo la siguiente clase en Python class Foo(object): a = None b = None c = None def __init__(self, a = None, b = None, c = None): self.a = a self.b = b self.c = c ¿Hay alguna manera de simplificar este proceso? Cada vez que agrego un nuevo miembro a la clase […]

¿Cuál es un ejemplo básico de herencia simple usando la palabra clave super () en Python?

Digamos que tengo las siguientes clases configuradas: class Foo: def __init__(self, frob, frotz): self.frobnicate = frob self.frotz = frotz class Bar: def __init__(self, frob, frizzle): self.frobnicate = frob self.frotz = 34 self.frazzle = frizzle ¿Cómo puedo (si puedo) usar super () en este contexto para eliminar el código duplicado?

La asignación de Python a uno mismo en el constructor no hace que el objeto sea igual

Estoy haciendo un constructor en Python. Cuando se llama con un objeto existente como su entrada, debe establecer el objeto “nuevo” en ese mismo objeto. Aquí hay una demostración de 10 líneas: class A: def __init__(self, value): if isinstance(value, A): self = value else: self.attribute = value a = A(1) b = A(a)#a and b […]

¿Por qué, o más bien, cómo funciona el objeto .__ nuevo__ funciona de manera diferente en estos dos casos?

Versión de Python: “‘2.7.3 (predeterminado, 10 de abril de 2013, 06:20:15) \ n [GCC 4.6.3]’” Tengo esto: >>> class testclass1(object): … pass … >>> class testclass2(object): … def __init__(self,param): … pass … >>> a = object.__new__(testclass1, 56) Traceback (most recent call last): File “”, line 1, in TypeError: object.__new__() takes no parameters >>> b = […]

Evite especificar todos los argumentos en una subclase

Tengo una clase: class A(object): def __init__(self,a,b,c,d,e,f,g,………..,x,y,z) #do some init stuff Y tengo una subclase que necesita un argumento adicional (la última W ) class B(A): def __init__(self.a,b,c,d,e,f,g,………..,x,y,z,W) A.__init__(self,a,b,c,d,e,f,g,………..,x,y,z) self.__W=W Parece tonto escribir todo este código de la placa de la caldera, por ejemplo, pasar todos los argumentos del Ctor de B a la llamada […]