je suis un peu embrouillé... Je veux créer une nouvelle instance d'une classe, en ayant uniquement son type. __new__ semble faire ce que je veux, mais voilà, sans que je ne sache pourquoi, il n'appelle pas __init__, contrairement à ce que me dit la doc python (au passage, j'utilise python 2.6.1):
http://docs.python.org/reference/datamodel.html#object.__new(...)
Prenons l'exemple suivant :
class A (object):
def __init__ (self):
print "__init__ called"
Et le résultat en mode interactif :
>>> a = A()
__init__ called
>>> b = object.__new__ (A)
>>>
a et b sont bien du type A, j'ai vérifié. Mais on peut voir que __init__ n'est pas appelé quand je crée l'instance en passant par __new__. Est-ce que quelqu'un saurait où je m'y prends mal ?
Merci d'avance.
PS: le site est ultra chiant pour taper du code python...
# pas __new__
Posté par Octabrain . Évalué à 2.
Alors ce n'est pas __new__ que tu cherches.
Il te suffit d'"appeler" comme une fonction le type.
>>> class foo(object):
... pass
...
>>> bar=foo
>>> type(bar())
<class '__main__.foo'>
>>> bar
<class '__main__.foo'>
[^] # Re: pas __new__
Posté par Octabrain . Évalué à 6.
[^] # Re: pas __new__
Posté par liberforce (site web personnel) . Évalué à 2.
En tout cas, un très grand merci, c'est exactement ce que je voulais !
[^] # Re: pas __new__
Posté par Octabrain . Évalué à 3.
Si on a une classe "A" ou une fonction "f", ou une méthode "objet.m", et qu'on veut y faire référence, il suffit simplement d'écrire "A", "f" ou "objet.m". On peut éventuellement l'affecter, et enfin l'appeler d'où que ce soit en faisant "la_reference(a, r, g, u, ments)"
[^] # Re: pas __new__
Posté par Octabrain . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.