Я пытаюсь проверить переменную для вызываемого в Python 3.x - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь проверить, может ли имя вызываться.От Джон Я ожидаю «Я вызываемый», а от Кейт «Я не вызываемый».Но я получаю «Я не вызываемый» дважды

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

1 Ответ

0 голосов
/ 24 июня 2018

В обоих примерах вы передаете объект str, который не вызывается.Сравните:

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

name () вызывается, а возвращаемое значение - нет.

...