SORU
13 Mayıs 2010, PERŞEMBE


Python: nesne oluşturma ve özelliklerini Ekle

Python dinamik bir nesne (başka bir nesnenin içinde) oluşturmak ve öznitelikleri eklemek istiyorum.

Denedim:

obj = someobject
obj.a = object()
setattr(obj.a, 'somefield', 'somevalue')

ama bu işe yaramadı.

Herhangi bir fikir?

düzenleme:

Değerler listesi döngüsü, (for döngü öznitelikleri belirliyorum

params = ['attr1', 'attr2', 'attr3']
obj = someobject
obj.a = object()

for p in params:
   obj.a.p # where p comes from for loop variable

Yukarıdaki örnek alırdım, *, obj.a.attr3*obj.a.attr27. bu

for döngü obj.a.NAME nasıl yapacağımı bilmiyordum çünkü setattr fonksiyon kullandım.

Nasıl özniteliği yukarıdaki örnekte p değerine göre ayarlayın ki?

CEVAP
13 Mayıs 2010, PERŞEMBE


Bu yerleşik object oluşturulabileceği ama herhangi bir özellik var. (Bu kesin bir amaç için isterdim.) Öznitelikleri tutmak için __dict__ yok.

Ben genellikle sadece bunu yapmak için:

class Object(object):
    pass

a = Object()
a.somefield = somevalue

Ben, Object sınıf daha anlamlı bir isim koyuyorum bağlı olarak veriyorum.

Bazı insanlar öznitelik erişim anahtarlarını almak için izin dict alt sınıf bir oraya farklı bir şey yapın. (**20) yerined.key

Edit: Sorunuzun ek için, setattr kullanmak iyidir. Sadece object() örnekleri setattr kullanamazsınız.

params = ['attr1', 'attr2', 'attr3']
for p in params:
    setattr(obj.a, p, value)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • ThePointblank

    ThePointblan

    18 Aralık 2006