静的メソッドで独自のクラスを参照するための省略形はありますか?
次のコードがあるとします。
class SuperLongClassName(object):
@staticmethod
def sayHi():
print 'Hi'
@staticmethod
def speak():
SuperLongClassName.sayHi() # Is there a shorthand?
静的メソッドで独自のクラスを参照するための省略形はありますか?
次のコードがあるとします。
class SuperLongClassName(object):
@staticmethod
def sayHi():
print 'Hi'
@staticmethod
def speak():
SuperLongClassName.sayHi() # Is there a shorthand?
はい、@classmethod
代わりに使用し@staticmethod
ます。要点は、@staticmethod
不要な場合は余分なクラスパラメーターを削除することです。
class SuperLongClassName(object):
@classmethod
def sayHi(cls):
print 'Hi'
@classmethod
def speak(cls):
cls.sayHi()
おそらく、 が必要ですclassmethod
。のように機能しstaticmethod
ますが、暗黙的な最初の引数としてクラスを受け取ります。
class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass(object):
@classmethod
def foo(cls):
print cls.__name__
Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass.foo() # prints Claaa...
警告:
class Subclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass(
Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass):
pass
Subclaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass.foo() # prints Subclaaa...
または、モジュール レベルでクラスの短いエイリアスを定義します。
class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2(object):
@staticmethod
def foo():
return _cls2
_cls2 = Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2
# prints True
print (Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2 is
Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2.foo())