次のコードでOPはTemplateクラスclass BatchRename(Template):
を継承したクラスを作成し、コードの最後には工法がないのに(def __init__():
)、クラスをt = BatchRename(fmt)
としてインスタンス化しています。 。私がPythonで継承を理解しているので、このコードに何か問題があるかもしれませんが、私はPythonには新しいので、何か不足しているかもしれません。誰も私にこれを説明できますか?コンストラクション関数と継承を持たないPythonクラスのインスタンス化
リトルコード説明:OPは、テンプレートでカスタム区切り文字を使用する方法を示していて、彼は例のいくつかのファイルに名前を変更するバッチを行っています。彼はテンプレートから継承するカスタムクラスを作成して、delimeter
という名前(フィールド、プロパティ、属性)を変更し、内部の機能を同時に使用します。
>>> import time, os.path
>>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']
>>> class BatchRename(Template):
... delimiter = '%'
>>> fmt = raw_input('Enter rename style (%d-date %n-seqnum %f-format): ')
Enter rename style (%d-date %n-seqnum %f-format): Ashley_%n%f
>>> t = BatchRename(fmt)
>>> date = time.strftime('%d%b%y')
>>> for i, filename in enumerate(photofiles):
... base, ext = os.path.splitext(filename)
... newname = t.substitute(d=date, n=i, f=ext)
... print '{0} --> {1}'.format(filename, newname)
img_1074.jpg --> Ashley_0.jpg
img_1076.jpg --> Ashley_1.jpg
img_1077.jpg --> Ashley_2.jpg
私がこのコードを取った:あなたはすべてのPythonクラスで__init__
を必要としないhttp://docs.python.org/tutorial/stdlib2.html#templating
new-styleと言うことでバージョン3.0を意味しますか? – Tarik
@Braveyard:いいえ、Python 2.3(IIRC)以降に実装された新しいスタイルのクラス、つまり 'object'から派生したクラスです。 –