Pythonを使用している間、.lower()
または.startswith()
またはなどの文字列で使用できる多くのことを見.endswith()
てきましたが、文字列を渡すクラスを使用する必要があると考えていたため、それに類似した関数を作成する方法がわかりません。関数に、そして私は単にの"the string".myfunc()
代わりにのようなことをしたいですMyClassObjWithString.myfunc()
。
このような機能を作る方法はありますか?
Pythonを使用している間、.lower()
または.startswith()
またはなどの文字列で使用できる多くのことを見.endswith()
てきましたが、文字列を渡すクラスを使用する必要があると考えていたため、それに類似した関数を作成する方法がわかりません。関数に、そして私は単にの"the string".myfunc()
代わりにのようなことをしたいですMyClassObjWithString.myfunc()
。
このような機能を作る方法はありますか?
Pythonでは、文字列リテラルは常にタイプbasestring
(またはstr
py3k)です。そのため、文字列リテラルにメソッドを追加することはできません。コンストラクターで文字列を受け入れ、役立つ可能性のあるメソッドを持つクラスを作成できます。
MyClass("the string").myfunc()
もちろん、関数を作成する必要があると主張される可能性があります。
myfunc("the string")
できる関数を書くことはできません
"the string".myfunc()
それは文字列クラスを変更することを意味するからです。しかし、あなたができるメソッドを書いてみませんか
myfunc("the string")
何かのようなもの
def myfunc(s):
return s * 2
これらはメソッドであり、定義後に(一部の)クラスにメソッドを追加または置換できますが(モンキーパッチと呼ばれる方法)、非常に推奨されておらず、組み込みクラスでは不可能です。
関数を使用するだけです。