Subscribed unsubscribe Subscribe Subscribe

collections.pyのnamedtupleが凄いの話

こんなツイートを数日前に見つけた。脊髄反射的にcollections.pyを見に行ったら、確かに凄くて色んな意味で感動した。見てもらえれば、分かると思うけど、端的に言うと下記のような事をしてた。 そういえば標準モジュールとか中身全然見た事なかったので、ちょこちょこ見てみようと思った。

# -*- coding: utf-8 -*-

classname = "Saiyan"
saiyan_name = "Kakarot"

template = """
# -*- coding: utf-8 -*-

class %(classname)s(object):

    def __init__(self, name):
        self.name = name

    def say_hello(self):
        return 'Hello! My Name is ' + self.name

kakarot = %(classname)s("%(saiyan_name)s")
""" % locals()

try:
    exec template
except SyntaxError as e:
    raise SyntaxError(e)

print kakarot.say_hello() #=> Hello! My Name is Kakarot

raditz = Saiyan("Raditz")
print raditz.say_hello() #=> Hello! My Name is Raditz