In Java dachte ich, dass Getter / Setter auf standardmäßige Weise für Klassenfelder definiert werden kann, einschließlich des Funktionsnamens. Deshalb habe ich ein Skript in Python 3 geschrieben, damit ich es nicht manuell eingeben muss. vorstellen.
Berücksichtigen Sie als Getter / Setter nur die Mindestfunktionen. Wenn Sie beispielsweise mit dem Setter nach ungültigen Werten suchen möchten, fügen Sie diese manuell hinzu.
Sprache: Python3 Betriebssystem: macOS (Ich denke, andere Betriebssysteme sind in Ordnung)
Ich werde anhand eines Beispiels erklären, was ich tun möchte.
Angenommen, Sie haben eine Assistentenklasse, die einen Assistenten darstellt, und einen Namen, der einen Namen darstellt, und eine Kraft, die die magische Kraft als Felder darstellt.
Wizard.java
public class Wizard {
private String name;
private double power;
...
}
In diesem Fall möchte ich Getter / Setter wie folgt definieren. Der Methodenname sollte die Form getName / setName für den Feldnamen haben.
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;
}
...
}
Das geschriebene Skript wird unten gezeigt.
Die ersten drei Zeilen beziehen sich auf den Speicherort der Datei. Der allgemeine Ablauf besteht darin, die Felder Zeile für Zeile zu lesen und Getter / Setter aus dem Typnamen und dem Variablennamen zu schreiben.
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("}")
Um es zu verwenden, legen Sie zunächst eine Datei mit dem Namen fields.txt in denselben Ordner wie das obige Skript und kopieren Sie die Felder aus dem Java-Code und fügen Sie sie wie unten gezeigt ein.
fields.txt
private String name;
private double power;
Wenn das Skript ausgeführt wird, wird die Getter / Setter-Definition wie unten gezeigt ausgegeben. Bitte kopieren Sie diese und fügen Sie sie in den ursprünglichen Java-Code ein.
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;
}
Ich habe es zum Spaß gemacht, daher weiß ich nicht, ob es tatsächlich verwendet wird, aber es hat Spaß gemacht, das Skript zu schreiben. Wenn Sie Meinungen oder Eindrücke haben, kommentieren Sie bitte.
Sie können den Code in diesem Artikel für jeden Zweck kopieren oder ändern.