たとえば、次のコードでは、getName 関数の利点は何ですか?
class Node(object):
def __init__(self, name):
self.name = str(name)
def getName(self):
return self.name
def __str__(self):
return self.name
たとえば、次のコードでは、getName 関数の利点は何ですか?
class Node(object):
def __init__(self, name):
self.name = str(name)
def getName(self):
return self.name
def __str__(self):
return self.name
メリットはありません。他の言語 (Java など) から Python に移行する人は、慣れているため、これを行うことがあります。Python では、基になる変数を直接取得して設定する以外に何もしない、この種のゲッターとセッターを作成しても意味がありません。 プロパティを使用すると、後で値を取得/設定するだけでなく、より複雑なことを行う必要がある場合に、ロジックを透過的に交換できます。
ゲッター/セッターを使用することには利点がありますが、Python では、属性を直接取得/設定する代わりに、単純なゲッター/セッターを使用する本当の理由はありません。私が考えることができる唯一の理由は、特定のメソッド セットを使用できるようにする必要がある既存の API との互換性を維持する必要がある場合です。
クラス属性に直接アクセスするだけで、getter を使用しないでください。通常、ゲッターはプライベート/保護された属性にアクセスするために使用されますが、Python ではそのようなことはありません。ゲッターを使用するもう 1 つの理由は、値を返す前にいくつかの作業を行うことができるようにすることです。あなたの場合はそうではありませんが、将来変更される可能性があります。その時が来たら、property
デコレータを使い始めるだけです。
@property
def name(self):
return self._name
直接アクセスするのと同じように、このようにmyObject.name
アクセスします。
プロダクション コードでは@property
. しかし、あなたが尋ねたので、私はそこに何かを投げます.
おそらく、プログラマーは のサブクラスを作成し、特別な作業を行うNode
ためにオーバーライドする方が簡単 (または少なくともより明示的) であると考えるでしょう。getName
ちょっとした考え!
しかし、一般的に、他の人が言ったように、それは一般的に見られるものではありません.
ありません。これらは Python では不要であり、広く推奨されています。