Python komut dosyalarından birine bir sorum var. Xml config dosyalarını ana komut dosyasına almak ve dönüştürmek için kütüphaneyi tekdüze (https://github.com/stchris/untangle) kullanıyorum.Dinamik nesne adıyla python nesnelerine nasıl erişilir?
Sorun: Yapı dosyasında birden fazla kullanıcı için kullanıcı bilgileri var ve bu bilgileri bir döngüde kullanıyorum. Çok iyi çalışır, ancak xml dosyasından oluşturulan nesnelerin adı nedeniyle betiği çok çirkin yapar.
Beton Bu, dinamik kullanmak istediğim nesnenin adını değiştiremediğim (veya nasıl olduğunu bilmiyorum) anlamına gelir.
if employee == 0:
if str(configobj.config.modes.employee.employee_1.name.cdata) != '':
display.drawtext(0,0,str(configobj.config.modes.employee.employee_1.name.cdata),"7x13B",255,255,255,True)
if str(configobj.config.modes.employee.employee_1.line1.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_1.line1['x']),
int(configobj.config.modes.employee.employee_1.line1['y']),
if str(configobj.config.modes.employee.employee_1.line2.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_1.line2['x']),
int(configobj.config.modes.employee.employee_1.line2['y']),
if str(configobj.config.modes.employee.employee_1.line3.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_1.line3['x']),
int(configobj.config.modes.employee.employee_1.line3['y']))
displayimage = True
elif employee == 1:
if str(configobj.config.modes.employee.employee_2.name.cdata) != '':
display.drawtext(0,0,str(configobj.config.modes.employee.employee_2.name.cdata),"7x13B",255,255,255,True)
if str(configobj.config.modes.employee.employee_2.line1.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_2.line1['x']),
int(configobj.config.modes.employee.employee_2.line1['y']),
if str(configobj.config.modes.employee.employee_2.line2.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_2.line2['x']),
int(configobj.config.modes.employee.employee_2.line2['y']),
if str(configobj.config.modes.employee.employee_2.line3.cdata) != '':
display.drawtext(int(configobj.config.modes.employee.employee_2.line3['x']),
int(configobj.config.modes.employee.employee_2.line3['y']),
if str(configobj.config.modes.employee.employee_2.image.cdata) != '':
display.showimage(160,0,str(configobj.config.modes.employee.employee_2.image.cdata))
displayimage = True
Ve bu değişen sayı ile tekrarlanan kod bir sürü:
örnek kod aşağıda belirtilmiştir. Bunu nasıl geliştirebilirim?
Something çok yanlış geliyor liste öğeleri olarak: 'configobj.config.modes.employee [0] .name.cdata' vb. – chepner