En Java, je pensais que getter / setter pouvait être défini de manière standard pour les champs de classe, y compris le nom de la fonction, j'ai donc écrit un script en Python 3 pour ne pas avoir à le saisir manuellement. Présenter.
En tant que getter / setter, ne considérez que les fonctions minimales. Par exemple, si vous souhaitez vérifier les valeurs non valides avec setter, ajoutez-le manuellement.
Langue: Python3 OS: macOS (je pense que les autres OS sont bien)
Je vais vous expliquer ce que je veux faire à travers un exemple.
Supposons que vous ayez une classe Wizard qui représente une sorcière et que vous ayez un nom qui représente un nom et un pouvoir qui représente le pouvoir magique sous forme de champs, comme indiqué ci-dessous.
Wizard.java
public class Wizard {
private String name;
private double power;
...
}
Dans ce cas, je voudrais définir getter / setter comme suit. Le nom de la méthode doit être sous la forme getName / setName pour le nom du nom de champ.
Wizard.java
public class Wizard {
private String name;
private double power;
...
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public double getPower() {
return this.power;
}
public void setPower(double power) {
this.power = power;
}
...
}
Le script écrit est illustré ci-dessous.
Les trois premières lignes concernent l'emplacement du fichier. Le flux général est de lire les champs ligne par ligne et d'écrire getter / setter à partir du nom du type et du nom de la variable.
make_getter_and_setter.py
import os
path_of_this_script = os.path.dirname(__file__)
path_r = os.path.join(path_of_this_script, 'fields.txt')
with open(path_r) as f_r:
for line in f_r: # line ex) "private double power;\n"
line_list = line.rstrip().split(" ") # ex) ['private', 'double', 'power;']
var_name = line_list[-1].rstrip(";") # ex) power
pascal_var_name = var_name[0].upper() + var_name[1:] # ex) Power
type_name = line_list[-2] # ex) double
#getter ex)
# public double getPower() {
# return this.power;
# }
print("public " + type_name + " get" + pascal_var_name + "()" + " {")
print(" return this." + var_name + ";")
print("}")
#setter ex)
# public void setPower(double power) {
# this.power = power;
# }
print("public void set" + pascal_var_name + "(" + type_name + " " + var_name + ")" + " {")
print(" this." + var_name + " = " + var_name + ";")
print("}")
Tout d'abord, pour l'utiliser, placez un fichier appelé fields.txt dans le même dossier que le script ci-dessus, puis copiez et collez les champs du code Java comme indiqué ci-dessous.
fields.txt
private String name;
private double power;
Ensuite, lorsque le script est exécuté, la définition de lecture / définition est sortie comme indiqué ci-dessous. Veuillez copier et coller ceci dans le code Java d'origine.
python
$ python make_getter_and_setter.py
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public double getPower() {
return this.power;
}
public void setPower(double power) {
this.power = power;
}
Je l'ai fait pour le plaisir, donc je ne sais pas s'il sera réellement utilisé, mais c'était amusant d'écrire le script. Si vous avez des opinions ou des impressions, veuillez commenter.
Vous êtes libre de copier ou de modifier le code de cet article dans n'importe quel but.