Ich erstelle eine Klasse namens Conversation als Teil eines größeren Codes und möchte sicherstellen, dass die Felder, in die der Benutzer eingibt, gültig sind (für den Fall, dass sie ungültig sind, möchte ich einen Wert erhöhen) Fehler), aber meine is_valid Methode funktioniert nicht, wenn ich das Programm ausführen:Validierungsmethode innerhalb einer Klasse
Klasse Gespräch:
def __init__(self, members, size_limit, backup_policy, cloud_account_prefix='./'):
if not self.is_valid():
raise ValueError
self.members = members
self.size_limit = size_limit
self.backup_policy = backup_policy
self.cloud_account_prefix = cloud_account_prefix
self.backup_count = 0
self.size_count = 0
self.messages = []
def is_valid(self, members, size_limit, backup_policy, cloud_account_prefix):
if self.members < 2:
return False
if self.size_limit <= 10:
return False
if not path_ok(self.cloud_account_prefix):
return False
if self.backup_policy < 1:
return False
else:
return True
Was mache ich falsch?
Funktioniert nicht? Irgendein Fehler? Rufst du es irgendwo an? – Miguel
entfernen Sie "selbst." in deiner is_valid-Funktion. In diesem Moment sind noch nicht definiert. Verwenden Sie stattdessen direkt die Argumente. zB: "if members <2:" –
Warum validieren Sie Ihre Attribute bei der Zuweisung nicht mithilfe von Eigenschaften? Auch solltest du besseres Feedback geben; warum nicht die Validierung den Fehler werfen, der eigentlich sagt * welchen Wert und warum *? "Es gab einen ValueError" sagt mir nichts, aber z.B. "Sie müssen mindestens zwei Mitglieder angeben" ist nützliche Information. – jonrsharpe