Γιατί είναι μεταβλητή περίπτωση μου δεν το __dict__;

ψήφοι
31

Αν μπορώ να δημιουργήσω μια τάξη Aως εξής:

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

Έλεγχος το __dict__μέλος μοιάζει{'name': 'A'}

Αν όμως μπορώ να δημιουργήσω μια τάξη B:

class B:
    name = 'B'

__dict__ είναι άδειο.

Ποια είναι η διαφορά μεταξύ των δύο, και γιατί δεν nameεμφανίζονται στο B«s __dict__;

Δημοσιεύθηκε 30/08/2008 στις 08:12
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
43

B.nameείναι ένα χαρακτηριστικό της κατηγορίας, δεν αποτελεί χαρακτηριστικό παράδειγμα. Δείχνει σε B.__dict__, αλλά όχι σε b = B(); b.__dict__.

Η διάκριση αυτή επισκιάζεται κάπως, επειδή κατά την πρόσβαση σε ένα χαρακτηριστικό σε ένα παράδειγμα, η dict τάξη είναι μια εναλλακτική. Έτσι, στο παραπάνω παράδειγμα, b.nameθα σας δώσει την αξία του B.name.

Απαντήθηκε 30/08/2008 στις 08:33
πηγή χρήστη

ψήφοι
12
class A:
    def _ _init_ _(self):
        self.name = 'A'
a = A()

Δημιουργεί ένα χαρακτηριστικό για το παράδειγμα αντικειμένου μιας του τύπου Α και ως εκ τούτου μπορεί να βρεθεί σε: a.__dict__

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

Δημιουργεί ένα χαρακτηριστικό για την κατηγορία Β και το χαρακτηριστικό μπορεί να βρεθεί σε B.__dict__εναλλακτικά εάν έχετε μια παρουσία β τύπου Β μπορείτε να δείτε το επίπεδο της τάξης αποδίδει στηνb.__class__.__dict__

Απαντήθηκε 02/09/2008 στις 14:12
πηγή χρήστη

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