SORU
16 EKİM 2008, PERŞEMBE


Python: sınıf ve örnek öznitelikleri arasındaki Fark

Orada arasında anlamlı bir ayrım vardır:

class A(object):
    foo = 5   # some default value

vs

class B(object):
    def __init__(self, foo=5):
        self.foo = foo

Eğer örneklerini çok oluşturuyorsanız, performansında herhangi bir fark ya da iki stilleri için alan ihtiyacı var mı? Bu kodu okurken, iki stilleri anlamını önemli ölçüde farklı olduğunu düşünüyor musunuz?

CEVAP
16 EKİM 2008, PERŞEMBE


Performans değerlendirmeleri ötesinde, bir önemli varsemantikfark. Sınıf özniteliği bu durumda, sadece bir nesne olarak adlandırılır. Örnek-öznitelik---küme örnekleme, nesneleri anılan birden fazla olabilir. Örneğin

>>> class A: foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
>>> class A:
...  def __init__(self): self.foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo    
[]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • megablueblaster

    megablueblas

    23 HAZİRAN 2006
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011