我尝试检查 Python 3.x 中的可调用变量

I try to check a variable for callable in Python 3.x

我尝试检查名称是否可调用。来自 john 我希望 "I'm a callable" 和来自 kate "I'm not a callable"。但是我 "I'm not a callable" 两次

def name(first_name, last_name):
  return first_name+' '+last_name

class Person:
    def __init__(self, name):
        self.name = name
        if callable(self.name):
            print("I'm a callable")
        else:
            print("I'm not a callable")

john = Person( name('John', 'Green'))
kate = Person("Kate")

结果是:

I'm not a callable
I'm not a callable

您在两个示例中都传递了一个不可调用的 str 对象。比较:

>>> a = Person(name('John', 'Watson'))
I'm not a callable
>>> a = Person(name)
I'm a callable

name() 可调用,而其 return 值不可调用。