Mit dem @property
Dekorator hat Python die Notwendigkeit von Getter und Setter für Objekteigenschaften komplett eliminiert (manche sagen "Attribute"). Dies macht Code viel einfacher, während die Erweiterbarkeit beibehalten wird, wenn die Dinge komplexer werden müssen.Python: Prädikat Methoden als Eigenschaften?
Ich frage mich, was der Pythonic Ansatz für die folgende Art von Methode ist, obwohl. Angenommen, ich habe die folgende Klasse:
class A(object):
def is_winner(self):
return True # typically a more arcane method to determine the answer
Solche Methoden sind in der Regel keine Argumente und haben keine Nebenwirkungen. Man könnte diese Prädikate nennen. Und angesichts ihres Namens ähneln sie oft sehr dem, was man auch als Eigentum hätte speichern können.
Ich bin geneigt, einen @property
Dekorateur zu dem oben genannten, zu geben, um der Lage zu sein, es als Objekteigenschaft zu nennen (das heißt foo.is_winner
), aber ich habe mich gefragt, ob dies der Standard, was zu tun. Auf den ersten Blick konnte ich keine Dokumentation zu diesem Thema finden. Gibt es einen gemeinsamen Standard für diese Situation?
Wenn es Ihre API * einfacher und sauberer macht *, dann gehen Sie auf jeden Fall für die '@ Eigenschaft'! Sie brauchen keinen Style Guide, um Ihnen das zu sagen. –
Nun, die erste offensichtliche Änderung, die gemacht werden muss, um es zu Pythonic zu machen, besteht darin, Camelcasing-Methodennamen zu stoppen. – rightfold
Sie möchten möglicherweise vermeiden, teure Methoden (Berechnung oder E/A) in Eigenschaften zu machen, zumindest wenn Sie sie nicht memotieren. –