Différence entre Python auto et Java
J'avais fait un peu de Python longtemps en arrière. Je suis cependant de se déplacer sur Java maintenant. Je voulais savoir si il y avait des différences entre le Python "auto" méthode et la Java "ce".
Je sais que le "soi" n'est pas un mot clé "this" est. Et c'est à peu près ce que je pouvais comprendre. Ai-je raté quelque chose?
- Qu'entendez-vous par "une méthode"?
- Vous aussi vous n'avez pas à avoir
self
(ou en Java cas,this
) comme premier paramètre d'une méthode d'une classe en Java.
Vous devez vous connecter pour publier un commentaire.
Sur
self
en Python (voici la source: Python auto explication):La raison pour laquelle vous devez utiliser auto. est parce que Python ne pas utiliser la syntaxe @ référer à l'instance attributs. Python a décidé de faire, des méthodes d'une manière qui rend l'instance à laquelle la méthode est de passer automatiquement, mais pas reçu automatiquement: le premier paramètre de méthodes est l'exemple, la méthode est appelée. Cela fait des méthodes tout à fait la même que les fonctions, et laisse le nom de l'utiliser jusqu'à vous (même si auto est la convention, et les gens vont généralement froncer les sourcils à vous lorsque vous utilisez autre chose.) auto n'est pas spécial pour le code, c'est juste un autre objet.
Python aurait pu faire quelque chose d'autre à distinguer normale noms d'attributs -- syntaxe particulière comme le Rubis a, ou d'exiger des déclarations comme C++ et Java, ou peut-être quelque chose de plus différent, mais il n'a pas. Python est tout pour rendre les choses explicite, de le rendre vivant ce qu'il en est, et bien qu'il ne le fait pas entièrement partout, il le fait faire par exemple des attributs. C'est pourquoi l'attribution à une instance de l'attribut doit savoir ce qu'instance d'attribuer à l', et c'est pourquoi il a besoin de auto..
Sur
this
en Java étant expliqué par Oracle (voici la source: Java cette explication):Au sein d'une instance de méthode ou d'un constructeur, ce est une référence à l'objet — l'objet dont la méthode ou le constructeur est appelé. Vous pouvez vous référer à un membre de l'objet courant à l'intérieur d'une méthode d'instance ou un constructeur en utilisant ce.
La raison la plus courante pour l'utilisation de la ce mot-clé est parce qu'un champ est masqué par une méthode ou d'un constructeur paramètre.
Tout d'abord, permettez-moi de corriger vous -
self
n'est pas une méthode. Aller plus loin:Techniquement les deux
self
etthis
sont utilisés pour la même chose. Ils sont utilisés pour accéder à la variable associée à l'instance en cours. La seule différence est, vous devez inclureself
explicitement en tant que premier paramètre à une méthode d'instance en Python, alors que ce n'est pas le cas avec Java. Par ailleurs, le nomself
peut être n'importe quoi. Ce n'est pas un mot clé, comme vous le savez déjà. vous pouvez même changer dethis
, et il fonctionne parfaitement. Mais les gens aiment utiliserself
, comme il est maintenant devenu un peu une convention.Voici un simple exemple de méthode d'accès à une variable d'instance en Python et Java:
Python:
Java:
Voir aussi:
this
this
parent désigne parent, mais en pythonself
parent désigne à l'enfant.Être prudent super peut garder sa propre version de ce.j'en Java, mais auto.je me réfère toujours à l'enfant en Python.
Main.java:
Main.py:
De sortie:
[Mise à jour]
La raison en est que Java est
int i
déclarationChild
classe rend lei
devenir de la classe de portée variable, bien qu'aucune de ces variables ombrage en Python sous-classement. Si vous supprimezint i
dansChild
classe de Java, il permet d'imprimer le 7 et le 7 aussi.De mon point de vue, la différence la plus évidente est que, dans la classe java, dans le constructeur, vous devez spécifier le champ
Alors que dans le code python, vous n'avez pas à le faire, c'est implicite.