Я так догадываюсь в питоне из за разных точек входа или нэймспейсов классы начинают отличаться. Но перейдём к простому примеру:
m2.py
import pickle
from m1 import Ab
if __name__ == '__main__':
ab = Ab()
with open('data.pickle', 'wb') as f:
pickle.dump(ab, f)
m1.py
import pickle
class Ab:
def __init__(self):
pass
class DataReader:
def __init__(self):
pass
def readPickle(self):
with open('data.pickle', 'rb') as f:
return pickle.load(f)
if __name__ == '__main__':
ab = Ab()
dataReader = DataReader()
ab2 = dataReader.readPickle()
print('ab', ab)
print('ab2', ab2)
if isinstance(ab, Ab):
print('isinstance ab')
if isinstance(ab2, Ab):
print('isinstance ab2')
Для примера передачи из сети приведу пример передачи данных через файл
Сначала выполняется m2.py импортирует класс из модуля, сеарилизирует и сохраняет (типа сетевой пакет) в файл
data.pickle
Далее выполняется m1.py, читает данные из файла и пытается определить принадлежат ли они классу. Вывод скрипта такой:
ab <__main__.Ab object at 0x03482E68>
ab2 <m1.Ab object at 0x0349C160>
isinstance ab
То есть тут видно, что у ab2 перед точкой написано
m1 и, как я понял, из за этого не срабатывает второе условие
if isinstance(ab2, Ab)
и как в таком случае проверять принадлежность классу?
А в итоге хочу определять какого типа данные пришли из сети посредством ООП