Хорошо, сейчас я работаю над большой базой кода Python 2.7, где моя текущая задача выглядит следующим образом:
Есть 2 модуля, скажем A
и B
, которые имеют много похожего кода (я имею в виду, что почти все методы идентичны). Моя цель - создать модуль Base
, содержащий весь общий код.
Для этой цели в настоящее время я вручную читаю и сравниваю функции (с одинаковыми именами) между A
и B
с , чтобы увидеть, являются ли они одинаковыми (или даже почти одинаковыми) или нет .
Так есть ли способ автоматизировать это? Как библиотека вроде diff
, которая построена для сравнения двух кодов функций Python, чтобы сказать мне, является ли их содержимое одинаковым / почти одинаковым или нет?
Так, например, в настоящее время я работаю над 2 модулями ResourceStatusDB.py
и ResourceStatusManagement.py
:
ResourceStatusDB.py
class ResourceManagementDB(BaseRSSDB):
.
.
.
def select(self, table, params):
session = self.sessionMaker_o()
XYZ()
# finding the table
found = False
for ext in self.extensions:
try:
table_c = getattr(__import__(ext + __name__, globals(), locals(), [table]), table)
found = True
break
except (ImportError, AttributeError):
continue
# If not found in extensions, import it from DIRAC base (this same module).
if not found:
table_c = getattr(__import__(__name__, globals(), locals(), [table]), table)
И ResourceStatusManagement.py
выбор по умолчанию (self, table, params):
session = self.sessionMaker_o()
# finding the table
found = False
for ext in self.extensions:
try:
table_c = getattr(__import__(ext + __name__, globals(), locals(), [table]), table)
found = True
break
except (ImportError, AttributeError):
continue
# If not found in extensions, import it from DIRAC base (this same module).
if not found:
table_c = getattr(__import__(__name__, globals(), locals(), [table]), table)
Обратите внимание, что две функции не совпадают. (Разница в несколько строк может быть возможной). Но все же большая часть логики одинакова на уровне функций. Есть ли способ обнаружить это?