Подходя к этому в конце дня, но вот мой пенниворт с объектом, который, как оказалось, содержит некоторые полезные пути в приложении, но вы можете адаптировать его для чего угодно, где вы хотите что-то вроде информации, которую вы можете получить с помощью getattr и точечные обозначения (о чем, собственно, и думается этот вопрос):
import os
def x_path(path_name):
return getattr(x_path, path_name)
x_path.root = '/home/x'
for name in ['repository', 'caches', 'projects']:
setattr(x_path, name, os.path.join(x_path.root, name))
Это круто, потому что сейчас:
In [1]: x_path.projects
Out[1]: '/home/x/projects'
In [2]: x_path('caches')
Out[2]: '/home/x/caches'
Таким образом, здесь используется объект функции, подобный приведенным выше ответам, но используется функция для получения значений (вы все равно можете использовать (getattr, x_path, 'repository')
вместо x_path('repository')
, если хотите).