2

これは構文エラーの問題です。Pythonデコレータでこのチュートリアルを実行しようとしています。

http://www.learnpython.org/page/Decorators

私の試みたコード

def Type_Check(correct_type):
    def new_function(old_function):
        def another_newfunction(arg):
            if(isintance(arg, correct_type)):
                return old_function(arg)
            else:
                print "Bad Type"

    #put code here

@Type_Check(int)
def Times2(num):
    return num*2

print Times2(2)
Times2('Not A Number')

@Type_Check(str)
def First_Letter(word):
    return word[0]

print First_Letter('Hello World')
First_Letter(['Not', 'A', 'String'])

何が悪いのかしら、助けてください

4

1 に答える 1

5

デコレータの最後に新しく定義された関数を返すのを忘れたようです:

def Type_Check(correct_type):
    def new_function(old_function):
        def another_newfunction(arg):
            if(isinstance(arg, correct_type)):
                return old_function(arg)
            else:
                print "Bad Type"
        return another_newfunction
    return new_function

編集:andreanによって修正されたいくつかのタイプもありました

于 2012-10-16T09:26:33.027 に答える