yasnippet

#contributor : Orestis Markou
#name : class ... :
# --
`(progn (defun join (x sep) 
   (if (= 1 (length x)) 
       (car x) 
       (concat 
	(car x) 
	sep 
	(join (cdr x) sep)))) "")`

class ${1:ClassName}(${2:object}):
    "docstring for $1"
    def __init__(self, ${3:args}):
        ${3:$
(join 
 (mapcar 
  (lambda (x)  (concat "self." x " = " x)) 
  (split-string text ", ")) 
 (concat "\n" (make-string 8 32)))
}
	$0

改行混ぜてもOKみたいだ。タブを4スペースと仮定してしまっているけど一応できた。