Ich habe die folgende Klasse:Python: Zugriff auf eine Liste in einer Klasse mit Eigenschaften oder benutzerdefinierten Methoden
def Interface:
def __init__(self, vlan, zone, address):
self.vlan = vlan
self.zone = zone
self.__address = []
for i in address:
self.__address.append(ipaddress.IPv4Interface(i))
eine Schnittstelle Instanz nie mehr als eine Zone und vlan haben könnte, konnte aber 1+ Adressen hat. Bisher ist der Adressparameter eine Liste mit einer oder mehreren Adressen als Items.
Das ist also meine erste Frage: Ist es eine gute Übung, eine Liste als Argument zu verwenden?
Zur Zeit denke ich darüber, wie die Adresse Variable zuzugreifen:
Verwenden Eigenschaften
I Eigenschaften @ address.set für Anfügen zum Löschen einer Adresse @ address.del verwenden könnte eine bestimmte Adresse und @ Adresse, um alle Adressen als Liste zu erhalten.
Was ich nicht mit diesem Ansatz möchte, ist:
- No way in die Zukunft (imho) dies wie ein ‚Set‘ mit Funktionen zu erweitern, die alle früheren Werte überschrieben (duno Wenn es notwendig)
- Es sieht aus wie ein "einzelner Wert", aber es ist eine Liste im Hintergrund.
schreiben benutzerdefinierten Methoden
Verwenden Sie benutzerdefinierte Methoden wie: def add_address (Adresse), def clear_address(), get_address_all()
Was ich mit diesem Ansatz nicht mag, ist:
- Es ist nicht pythonic fühlen (kann dies mehr ist ein Gefühl, als eine Tatsache)
Warum zum Teufel ich darüber nachdenke, nur die Liste
Ich mag nicht mit diesem Ansatz Was direkt als Interface.address verwenden ist:
- Es ist nicht eine einfache Liste mit Strings, sondern Instanzen IPv4Interface-Klasse. Wenn es meinen Kollegen nicht interessiert, könnte es schlimmer werden.
Kann hier jemand sein konnte mir ein paar nützliche Hinweise oder Grund bekommen, warum eine Art und Weise über den anderen bevorzugen (oder eine andere sein).
Danke!