Neden benim örnek değişken __dict__ değil?

oy
31

Ben bir sınıf oluşturursanız Aaşağıdaki gibi:

class A:
    def __init__(self):
        self.name = 'A'

Incelenmesi __dict__üyesi benziyor{'name': 'A'}

Ancak ben bir sınıf oluşturmak B:

class B:
    name = 'B'

__dict__ boş.

Ne ikisi arasındaki fark nedir ve neden olmaz namegösterilmesini B's __dict__?

Oluştur 30/08/2008 saat 08:12
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
43

B.nameBir sınıf değil, öznitelik bir örnek niteliktir. O kadar gösterir B.__dict__, ancak içinde b = B(); b.__dict__.

Bir örneğinde bir öznitelik eriştiğinizde, sınıf dict bir geri dönüş olduğu için ayrım biraz güme gidiyor. Yukarıdaki örnekte Yani, b.namesize değerini verecektir B.name.

Cevap 30/08/2008 saat 08:33
kaynak kullanıcı

oy
12
class A:
    def _ _init_ _(self):
        self.name = 'A'
a = A()

A tipi bir amacı, örneğin, bir bir öznitelik oluşturur ve bu nedenle de bulunabilir: a.__dict__

class B:
    name = 'B'
b = B()

Sınıf B ve özellik hakkında bir öznitelik bulunabilir oluşturur B.__dict__sen Gördüğünüz tip B'nin b örneğini varsa alternatif sınıf düzeyi özniteliklerib.__class__.__dict__

Cevap 02/09/2008 saat 14:12
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more