SORU
7 HAZİRAN 2009, Pazar


Python: değişen yöntem ve zamanında öznitelikleri

Ekleyin ve özellikleri ve yöntemleri kaldırılması gereken Python ile bir sınıf oluşturmak istiyorum. Nasıl tamamladılar?

Oh, ve lütfen nedenini sorma.

CEVAP
7 HAZİRAN 2009, Pazar


Bu örnek, bir örnek, bir sınıf için bir yöntem ekleyerek arasındaki farkları gösterir.

>>> class Dog():
...     def __init__(self, name):
...             self.name = name
...
>>> skip = Dog('Skip')
>>> spot = Dog('Spot')
>>> def talk(self):
...     print 'Hi, my name is '   self.name
...
>>> Dog.talk = talk # add method to class
>>> skip.talk()
Hi, my name is Skip
>>> spot.talk()
Hi, my name is Spot
>>> del Dog.talk # remove method from class
>>> skip.talk() # won't work anymore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Dog instance has no attribute 'talk'
>>> import types
>>> f = types.MethodType(talk, skip, Dog)
>>> skip.talk = f # add method to specific instance
>>> skip.talk()
Hi, my name is Skip
>>> spot.talk() # won't work, since we only modified skip
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Dog instance has no attribute 'talk'

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008
  • SketchBookPro

    SketchBookPr

    6 Mayıs 2009