例えば、
文字列クラスを拡張して、印刷するとタブまたは空白が先頭に追加されるようにします。それからそれを呼び出すことができて、
print 'hello world'
stdout に表示されると、先頭にタブ (空白) が追加されます。
例えば、
文字列クラスを拡張して、印刷するとタブまたは空白が先頭に追加されるようにします。それからそれを呼び出すことができて、
print 'hello world'
stdout に表示されると、先頭にタブ (空白) が追加されます。
はい: Python のソースコードを編集します。
真剣に: 他のプログラミング モデル (構造化、オブジェクト指向、モデリング) と同様に、Python は実行できることにいくつかの制限を課します。それらのいくつかは恣意的または「ばかげている」と感じるかもしれませんが、それぞれには正当な理由があります (通常、他のすべてのソリューションの欠点または既存のコードをすべて壊さない限り修正できない過去の間違い)。
ルールを破る必要があると感じたら、一歩下がって考えてみてください。あなたの「解決策」は間違っているのではないでしょうか? たぶん、あなたが望むものを達成するためのより良い方法がありますか?
この場合、次のフォーマットを使用します。
f = '\t%s'
print f % 'hello world'
あなたのソリューションとは異なり、これはあなたが達成しようとしていることを明示的に伝えます。
とはいえ、「モンキー パッチ」という手法を使用できます。このテクニックは危険ですので注意してください。そしてほとんどの場合、それはテクニックを使っている人が自分が何をしているのかわからなかったことを意味します.
文字列クラスを変更したいですか、それとも変更しprint
たいのは動作だけですか? もし、あんたが:
from __future__ import print_function
(または Python 3 を使用) 独自の関数を提供できます。print
たとえば、次のようになります。
def print(*line, **kwargs):
args = dict(sep=' ', end='\n', file=None)
args.update(kwargs)
sep = args['sep']
end = args['end']
file = args['file']
newlist = [];
for userln in line:
newlist.append("\t"+userln) # prefix the line with a tab
if file == None:
file = sys.stdout
__builtin__.print(sep.join(newlist),end=end,file=file)