特別なメソッドを使用することと、通常のクラス メソッドを定義することの違いは何ですか? 私はそれらの多くをリストしているこのサイトを読んでいました。
たとえば、このようなクラスを提供します。
class Word(str):
'''Class for words, defining comparison based on word length.'''
def __new__(cls, word):
# Note that we have to use __new__. This is because str is an immutable
# type, so we have to initialize it early (at creation)
if ' ' in word:
print "Value contains spaces. Truncating to first space."
word = word[:word.index(' ')] # Word is now all chars before first space
return str.__new__(cls, word)
def __gt__(self, other):
return len(self) > len(other)
def __lt__(self, other):
return len(self) < len(other)
def __ge__(self, other):
return len(self) >= len(other)
def __le__(self, other):
return len(self) <= len(other)
これらの特別なメソッドのそれぞれについて、代わりに通常のメソッドを作成できないのはなぜですか?それらは何が違うのですか? 見つからない基本的な説明が必要だと思います、ありがとう。