Kabuk benzeri bir ortam oluşturuyorum. Özgün kullanıcı girdisini kullanma yöntemim, çeşitli sınıfların yöntemlerine bir sözlük eşleme komutları (dizeler) kullanmaktı ve işlevlerin python'daki birinci sınıf nesneler olduğu gerçeğini kullanmaktı.Python'un getattrını yaygın olarak kullanmak kötü bir uygulama mıdır?
Esneklik uğruna (çoğunlukla ayrıştırma komutları için), kurulumumu değiştirmeyi, getattr (komut) kullanmamı, ihtiyacım olan yöntemi almam ve sonra argümanlarıma son vermem için değiştirmeyi düşünüyorum. ayrıştırıcı. Bu yaklaşımın bir başka avantajı, her zaman yeni bir metot/komut eklediğimde (şu anda statik olarak uygulanan) komut sözlüğümü güncellemek zorunda değil.
Soruma iki kat. İlk olarak, getattr'ın aynı problemleri var mı? İkincisi, kabuğumun verimliliğine bir vuruş mu çekeceğim? Kaç tane yöntem/komut aldığım önemli mi? Şu anda iki katına çıkabilen 30 komuttan bahsediyorum.
eğer http://pyparsing.wikispaces.com/ pyparsing'e bakmadınız, gerçekten de, herhangi bir şey için python'da kendi ayrıştırıcınızı yazmak için __NO__ gerçek bir sebep var. –
Fuzzy, Eminim ki bir tane düşünebilirim, ve bunu benim için yapıyorum: öğrenme amaçlı. Bu mevcut projeye başlamadan önce, fonksiyonların birinci sınıf nesneler olduğu anlamlarını anlamadım. Yine de referansı takdir ediyorum. Ben ona bakacağım. "Dis check" için – Wilduck