@ivy1991: Dann sind die Unterstriche an der falschen Stelle — die gehören *vor* den Namen. Ich würde Vorgaben von Lehrern ignorieren die der offiziellen Dokumentation der Sprache widersprechen, wenn sie die nicht *gut* begründen können.
Letztendlich sind es aber keine „privaten” Attribute weil ja für jedes mindestens ein Getter existiert, also offenbar mindestens Lesezugriff von aussen vorgesehen. Das man sie nicht schreiben darf, kann man auch durch Dokumentation erreichen, die das aussagt. Mehr ist ein führender Unterstrich ja auch nicht. Man spart sich dadurch dann aber eine Menge „boiler plate”-Quelltext.
Das erstellen eines `Database`-Exemplars und die `getDataTest()`-„Methode” die semantisch gar keine Methode darstellt, ist ein sehr fragwürdiger Entwurf. Der Name `getDataTest()` suggeriert zudem das es da einen Rückgabewert gibt, was offensichtlich nicht stimmt. In Python sähe das Ganze eigentlich so aus:
Code: Alles auswählen
from Database import Database
db = Database()
#
# TODO Translate class' name to english.
#
class Produktion(object):
def __init__(
self, name, order_id, product_id, product_name_id, nominal_weight_id
):
self.name = name
self.order_id = order_id
self.product_id = product_id
self.product_name_id = product_name_id
self.nominal_weight_id = nominal_weight_id
@staticmethod
def data_test():
db.getDataTest() # XXX Why ignore return value here?
Immer noch unter dem Vorbehalt, dass ich nicht überzeugt bin, dass `data_test()` tatsächlich in die Klasse gehört.
Ich hoffe mal die Klasse `Produktion` ist nicht das einzige was in einem Modul mit dem gleichen Namen steckt und im Modul `Database` gibt es nicht nur eine Klasse `Database`. Wenn man pro Modul grundsätzlich nur eine Klasse hat, dann macht die Organisationseinheit „Modul” überhaupt keinen Sinn. Das hier ist Python und nicht Java.