Şirketimizden ayrılan geliştiriciden bir proje aldım. Çok karmaşık değil, ama çok hoş görünmüyor. Yani soru şu: Uygulama bazı modülleri içeriyor ve bir tanesi de uygulamayı saklayan "ayarlar". seçenekler (tüm olası seçenekler değil, sadece iki tane söyleyelim: foo
ve bar
). uygulama o komut satırında (kullanarak argparse) den seçenekleri okur başlatıldığında:Uygulama ayarları modüllerde nasıl depolanır
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_true')
parser.add_argument('--baz', action='store_true')
Ve sonra bu pis şeyi gerçekleştirir: olmayan pythonic hack bu kirli olduğunu düşünüyorum:
for name, val in parser.parse_args(sys.argv[1:])._get_kwargs():
setattr(sys.modules['settings'], name, val)
İlk . Ve ikincisi, bu tür bir kodu kullanması sakıncalı bir durumdur, çünkü settings.baz
'u kullanmam gerektiğinde, IDE mevcut olmadığını bildirir. Bu kesmenin amacı, uygulamada kullanılan tüm modüllerde bulunan komut satırından ayrıştırılan seçenekleri yapmaktır.
Tekil desen gibi bir şey düşünüyorum, ancak PHP'de bir kez kullandım ve python'da bu doğru çözümü bilmiyorum. Ve olsa bile, birisi örnek gösterebilir mi?
Python ve SO üzerinde noob değilim, lütfen bana iyi davranın :) Teşekkürler.
Not; Ben tekil nesnelerdir İngilizcem
Bu bir kopyadır. Bu konuyla ilgili olarak http://stackoverflow.com/questions/15992387/python-settings-file –
yanıtı bu değildi. Bu bir çoğaltma değil - diğeri yapılandırma dosyaları hakkında, bu bir çalışma zamanı modülü yapılandırması hakkında. –