Ваша проблема не в «доступе к объектам из другого модуля», а в разрешении атрибута (имена, определенные в модуле, становятся атрибутами объекта модуля) по его имени.У вас будет точно такая же проблема для любого объекта, то есть:
class Foo():
def __init__(self):
self.a = 42
f = Foo()
name = 'a'
# now how to get 'f.<name>' ?
И общий ответ - встроенная getattr(object, name[, default])
функция:
print(f.a)
print(getattr(f, name))
Так что в вашем случае в B.py, который вам нужен
print(getattr(A_objects, input))
НО, если вы имеете дело с пользовательским вводом (для максимально возможного определения «пользовательских вводов»), вы, скорее всего, захотите явно определить, какие имена допустимыдоступ к нему осуществляется таким образом - использование dict является наиболее очевидным решением:
# a.py
a = {}
b = {}
# etc
registry = {
"a": a,
"b": b,
# etc
}
и:
# B.py
import A
input = 'a'
print(A.registry[input])