4

重複の可能性:
組み込みのPython型にカスタムメソッド/属性を追加できますか?

Pythonを使用している間、.lower()または.startswith()またはなどの文字列で使用できる多くのことを見.endswith()てきましたが、文字列を渡すクラスを使用する必要があると考えていたため、それに類似した関数を作成する方法がわかりません。関数に、そして私は単にの"the string".myfunc()代わりにのようなことをしたいですMyClassObjWithString.myfunc()

このような機能を作る方法はありますか?

4

3 に答える 3

6

Pythonでは、文字列リテラルは常にタイプbasestring(またはstrpy3k)です。そのため、文字列リテラルにメソッドを追加することはできません。コンストラクターで文字列を受け入れ、役立つ可能性のあるメソッドを持つクラスを作成できます。

MyClass("the string").myfunc()

もちろん、関数を作成する必要があると主張される可能性があります。

myfunc("the string")
于 2012-10-25T19:41:30.570 に答える
1

できる関数を書くことはできません

"the string".myfunc()

それは文字列クラスを変更することを意味するからです。しかし、あなたができるメソッドを書いてみませんか

myfunc("the string")

何かのようなもの

def myfunc(s):
   return s * 2
于 2012-10-25T19:41:13.007 に答える
0

これらはメソッドであり、定義後に(一部の)クラスにメソッドを追加または置換できますが(モンキーパッチと呼ばれる方法)、非常に推奨されておらず、組み込みクラスでは不可能です。

関数を使用するだけです。

于 2012-10-25T19:42:38.903 に答える