1
私はPythonでいくつかのクラスの関数を書いています。人々はこの関数に@classmethod
デコレータを追加するように私に提案しました。なぜPythonでクラスメソッドを使うべきですか?
マイコード:
import random
class Randomize:
RANDOM_CHOICE = 'abcdefg'
def __init__(self, chars_num):
self.chars_num = chars_num
def _randomize(self, random_chars=3):
return ''.join(random.choice(self.RANDOM_CHOICE)
for _ in range(random_chars))
提案の変更:
@classmethod
def _randomize(cls, random_chars=3):
return ''.join(random.choice(cls.RANDOM_CHOICE)
for _ in range(random_chars))
私はほとんど常にのみ_randomize
機能を使用しています。
私の質問は、classmethod
デコレータの機能を追加した場合のメリットは何ですか?
このメソッドでは、インスタンスの状態は使用されず、通常は「self」と呼ばれます。また、インスタンスを作成せずにクラスでテストできることを意味します。 – jonrsharpe
また、このクラスにelseがあまり含まれていない場合は、関数と 'functools.partial()'を使うほうが良いでしょう。多分。 –