Как выяснить, почему в этих условиях isisstance of возвращает False? - PullRequest
3 голосов
/ 17 апреля 2019

Этот вопрос не является специфичным для tensorflow, но имеет отношение к библиотеке.

Итак, вот настройки. У меня есть этот кусок кода:

if not isinstance(train_input_config, input_reader_pb2.InputReader):
  raise TypeError('The `train_input_config` must be a '
                  'input_reader_pb2.InputReader.')

Моя проблема в том, что isinstance(train_input_config,input_reader_pb2.InputReader) возвращает False, несмотря на это:

>>print(type(train_input_config))
<class 'input_reader_pb2.InputReader'>
>>print(input_reader_pb2.InputReader)
<class 'input_reader_pb2.InputReader'>

Также

print(type(train_input_config).__dict__)
print(input_reader_pb2.InputReader.__dict__)

и

print(train_input_config.__dir__())
print(input_reader_pb2.InputReader().__dir__())

оба возвращают совпадающие результаты. В этом случае я бы сказал, что, поскольку интерфейсы обоих совпадают, isinstanceof должен возвращать True.

Я не прав?

Как я мог бы исследовать эту проблему дальше, учитывая соответствующие интерфейсы?

Спасибо

P.S. если это помогает, класс input_reader_pb2.InputReader создается из файла proto.

...