J'ai une classe avec une __init__
fonction.
Comment puis-je renvoyer une valeur entière à partir de cette fonction lorsqu'un objet est créé?
J'ai écrit un programme, d'où l' __init__
analyse de la ligne de commande et j'ai besoin d'un jeu de valeurs. Est-il correct de le définir dans une variable globale et de l'utiliser dans d'autres fonctions membres? Si oui, comment faire cela? Jusqu'à présent, j'ai déclaré une variable hors classe. et la définition d'une fonction ne se reflète pas dans une autre fonction ??
__init__
; nous pouvons vous aider si vous décrivez ce que vous essayez vraiment d'accomplir.Réponses:
__init__
est nécessaire pour renvoyer Aucun. Vous ne pouvez pas (ou du moins ne devriez pas) retourner quelque chose d'autre.Essayez de créer ce que vous voulez pour renvoyer une variable d'instance (ou une fonction).
la source
new
ici? Est-cenew
implicite en Python? J'ai supposé que la sémantique de Python était différente de Java et des autres langages qui utilisent ce mot.super().__init__
à la classe dérivée sans avoir à les relayer via une variable d'instance.Pourquoi voudriez-vous faire ça?
Si vous souhaitez renvoyer un autre objet lorsqu'une classe est appelée, utilisez la
__new__()
méthode:la source
__init__
, vous vous rendez compte qu'en réalité, pour fournir la flexibilité que vous souhaitez, vous avez besoin d'une fabrique de classes qui renvoie des instances de sous-classes spécialisées. Mais les utilisateurs de votre bibliothèque utilisent déjà votre API existante. Pour le conserver, vous remplacez__new__
pour renvoyer des instances de vos sous-classes spécialisées.datetime
module dans la bibliothèque standard. Il utilise__new__
exactement de cette façon.De la documentation de
__init__
:Pour preuve, ce code:
Donne cette erreur:
la source
Exemple d'utilisation de la matière en question peut être comme:
Je n'ai pas assez de réputation donc je ne peux pas écrire de commentaire, c'est fou! J'aimerais pouvoir le poster comme commentaire sur weronika
la source
self
n'est pas défini dans__new__(cls, Item)
La
__init__
méthode, comme les autres méthodes et fonctions, retourne None par défaut en l'absence d'une instruction return, vous pouvez donc l'écrire comme l'une des deux:Mais bien sûr, ajouter le
return None
ne vous achète rien.Je ne sais pas trop ce que vous recherchez, mais l'un de ceux-ci pourrait vous intéresser:
imprime:
la source
f = Foo().value
__init__
.__init__
ne renvoie rien et doit toujours revenirNone
.la source
Vous pouvez simplement le définir sur une variable de classe et le lire à partir du programme principal:
la source
Je voulais juste ajouter, vous pouvez renvoyer des classes dans
__init__
La méthode ci-dessus vous aide à implémenter une action spécifique sur une exception dans votre test
la source
super().__init__
est de retourNone
, donc vous revenezNone
, ce qui est bien, mais redondant.init () ne renvoie aucune valeur parfaitement résolue
sortie: ma vitesse est de 21 kmh
la source
Eh bien, si vous ne vous souciez plus de l'instance d'objet ... vous pouvez simplement la remplacer!
la source
self
intérieur de ce constructeur.