@ Майк Пеннингтон Я просто хочу сначала сказать, что я тоже сталкиваюсь с этим. -
@ eyquem 'lower ()' - это функция.'lower' - указатель на функцию (если я не ошибаюсь).Python позволит вам попытаться запустить этот код, но он не будет вызывать функцию.
Я думаю, причина, по которой это трудно уловить, заключается в том, что вы не всегда знаете тип переменной, которую вы используете.вызов методовНапример, скажем, у меня есть 2 класса.
class Foo()
def func(self):
#do stuff
pass
class Bar()
self.func = "stuff"
Если в вашем коде есть функция, которая принимает аргумент 'baz', например, так:
def myfunction(baz):
print baz.func
def myfunction(baz):
baz.func()
Любой из них можетбыть действительным в зависимости от типа базы.Однако буквально нет способа узнать, имеет ли baz тип 'Foo' или 'Bar'.
РЕДАКТИРОВАТЬ: я имел в виду статический анализ ...