Kodumu yeniden düzenliyorum ve bu nedenle yeni ad alanları oluşturuyorum. Modüller için "statik" sınıfları (her bir yöntemde @staticmethod sınıfları) değiştiriyorum. Bu gitmek için yol değil mi? Sorun, bu modüller arasında kaynakların nasıl paylaşılacağı konusunda şüphelerim olmasıdır.Modüller arasında iyi uygulama paylaşımı kaynakları?
Veritabanına tüm bağlantıları yaptığım bir modülüm olduğunu ve elbette tüm sınıfların/yöntemlerin DB imlecini (SQLite kullanıyorum) depolayan değişkeni paylaştığını varsayalım. Şimdi, farklı modüllerde, imleci de paylaşmak zorundalar.
Yani, benim fikirlerim:
her modülde küresel değişken bildirin. Ama küreler kötüler, çocukları yerler ve işimizi çalıyorlar. Yani, bunun yolun olup olmadığını bilmiyorum. Böyle
'''Sub Module 1''' global database_cursor
İthalat orijinal database_cursor ile "baba" database_module ve kullanımı şey:
'''Sub Module 1''' db_cursor = database_module.database_cursor
Bu ikinci bu durumda iyi görünüyor, ama ben götürecek birçok durumda düşünüyorum Yinelemek için bir şey olduğunu sanıyorum yinelemeli ithalat için.
Sanırım [aşırı mühendislik] olabilirsiniz (http://en.wikipedia.org/wiki/Overengineering). Fonksiyonlar üzerinde çalışmak için bir imleç gerekiyorsa, fonksiyonlara 'cursor' parametresini ekleyin ve işiniz bitti. Tüm işlevi çağıran kod, imleci içeren ve tüm işlevlere ileten tek bir yerel değişken oluşturacaktır. Ayrıca veritabanı yönetimi için tek bir modül yeterli olduğunu söyleyebilirim. Daha fazla organizasyona ihtiyacınız olduğunu bulursanız, SQLAlchemy' gibi bir şey kullanmanız daha iyi olur. – Bakuriu
Bunun mühendislik üzerinde olduğunu sanmıyorum. Gereksiz yeniden ilkelemeden kaçınmak için veritabanı bağlantıları gibi şeyleri paylaşmak mükemmel bir yasaldır. Ancak bunun için bağlantı havuzuna bakmanın akıllıca olduğunu düşünüyorum. Aksi halde, daha önceki bir aramada hala kullanımda olan bağlantı ile ilgili problemler yaşarsınız. – RickyA