最初に、これは特定の結果を得る方法についての問題ではなく、Pythonの内部動作についての問題です。私はプログラミングにかなり慣れていないので、用語を間違って使用していないか教えてください。私の仮説はかなり初歩的なエラーを中心にしています。私は走ろうとします:
"My age is " + 46
明らかに、これは「 'int'オブジェクトを暗黙的にstrに変換できない」エラーを発生させます。文字列を整数に追加する定義はありませんが、作成できますか?
私の最初の質問は、これが文字列や整数のような組み込みクラスで可能かどうかです。私は周りを見回しましたが、そうではないと思いますが、誰かが方法を知っていれば、興味があります。
私の2番目の質問は、すべての点で文字列と整数のように動作するが、組み込みではない2つの新しいクラスを定義する場合、2つのクラスの追加を定義できますか?同じクラスの追加を定義できることはわかっていますが、2つの異なるクラスについてはどうですか?
最後に、追加(それが直接文字列と整数、または文字列と整数のような2つのクラスであるかどうか)は、整数を文字列に変換してから追加することにより、「私の年齢は46歳」になります。
前もって感謝します!
最初の質問については、組み込みクラスを変更することは基本的に不可能です。他のクラスをいじくることはできますが、それは一般的にひどい考えです。代わりに、必要なプロパティを持つサブクラスを作成できます。
例えば:
class mystr(str):
def __add__(self, other):
return mystr(str(self) + str(other))
このコードは、変更するプロパティstr
、つまり追加動作を除いて、クラスからすべてのプロパティを継承します。にキャストself
するstr
ことで、引き続きstr
の追加に委任しますが、他の引数もキャストして、str
説明した動作を取得します。
編集:最後に、にキャストバックしmystr
て、で終了しないようにしstr
ます。
これで、次のことができます。
>>> some_string = mystr("abc")
>>> some_string + 4
"abc4"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加