1
A
回答
2
>>> class a(object):
... b = 'bbbb'
... def __init__(self):
... self.c = 'cccc'
...
>>> a1=a()
>>> a2=a()
>>> a1.b
'bbbb'
>>> a2.b
'bbbb'
>>> a1.c='dddd'
>>> a1.c
'dddd'
>>> a2.c
'cccc'
>>> a.b= 'common'
>>> a1.b
'common'
>>> a2.b
'common'
9
是的,有區別。
b
是一個類變量......一個由a
的所有實例共享的類,而c
是一個實例變量,它將獨立存在於每個實例中。
2
'b'是一個類屬性,直接在類對象'a'上設置。 'c'是一個實例屬性,直接在self上設置。 self.b
由於查找的工作原理會找到a.b
,因此不能使用a.c
(因爲它不存在)。
5
b
是一個類變量,而c
是一個實例變量。
>>> a.b
'bbbb'
>>> a.c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'a' has no attribute 'c'
>>> a().b
'bbbb'
>>> a().c
'cccc'
類的實例對於它們的實例變量可能具有不同的值,但它們共享相同的類變量。
相關問題
- 1. A == B對B == A,有什麼區別
- 2. a = b = c和編程分別賦值有什麼區別?
- 3. Tcl [list a b c] vs {a b c}有什麼區別,在什麼情況下?
- 4. 在git中,A..B和A ... B有什麼區別?
- 5. swap(int&a,int&b)和swap(int * a,int * b)。有什麼區別?
- 6. MatLab中的[A,B]和[A; B]有什麼區別?
- 7. a // b和int(a/b)之間有什麼區別?
- 8. flash(a,b)和flash()。put(a,b)在PlayFramework中有什麼區別?
- 9. 什麼區別\\。\ C:和\\。\ C:\
- 10. 託管C++和C#有什麼區別?
- 11. Managed C++和C++/CLI有什麼區別?
- 12. printf中%c和%C有什麼區別?
- 13. \ c和\\ c有什麼區別?
- 14. C++和C++ CLI有什麼區別
- 15. Visual C++和C++有什麼區別?
- 16. &c和* c聲明有什麼區別?
- 17. 有什麼區別git fetch B + git merge B vs git merge origin/B
- 18. a + = b和a = + b之間的區別是什麼,a ++和++ a?
- 19. SqlCeConnection和SqlConnection C#有什麼區別?
- 20. C#Thread.Sleep()和threadreference.Join()有什麼區別?
- 21. C#.net和Visual Basic.net有什麼區別?
- 22. C++中#import和#include有什麼區別?
- 23. C中#define和'='有什麼區別?
- 24. GLSL和c有什麼區別?
- 25. Objective-C和Cocoa有什麼區別?
- 26. C#和.NET有什麼區別?
- 27. Ctrl + C和Ctrl + [有什麼區別?
- 28. C#中CLR和DLR有什麼區別?
- 29. '(a b c)和(list'a'b'c)之間的區別是什麼?
- 30. 有什麼區別`和$(Bash中有什麼區別?
你可能是指「是」,因爲*有*差異。 – fsanches 2010-01-01 02:22:29