2017-12-10 6 views
0
class demo(): 
    c_v=[] 
    def __init__(self): 
     demo.c_v.append('one') 

class demo(): 
    c_v=[] 
    def __init__(self): 
     self.c_v.append('one') 

Beide ergeben dasselbe Ergebnis? Was sind die beiden Anwendungsfälle?Was ist der Unterschied zwischen der Verwendung von self.classvariable und class.classvariable innerhalb von Methoden?

+3

Siehe https://stackoverflow.com/a/68672/3797387 –

+0

ich meine Frage anders denken –

+0

Meins ist ist innerhalb der Klasse, während Erklärung außerhalb der Klasse ist –

Antwort

1

Die Klassenvariable ist für alle verfügbar, die Instanzen von dieser Klasse erstellen, genau wie die Definition von Methoden innerhalb einer Klasse, während die Instanzvariable nur für diese Instanz verfügbar ist.

nehmen Sie dieses Beispiel:

class Example: 
    class_i = [1] 
    def __init__(self): 
     self.instance_i = [1] 

a = Example() 
b = Example() 
a.class_i.append(2) 
b.class_i.append(3) 
a.instance_i.append(40) 
b.instance_i.append(50) 

print a.class_i 
print b.class_i 
print a.instance_i 
print b.instance_i 

geben Ihnen diese Ausgabe:

[1,2,3] 
[1,2,3] 
[1,40] 
[1,50] 
Verwandte Themen