雖然在Python中使用OOP範例「玩」時遇到了一些誤解。 讓我們看到了一些小例子:在Python中創建和比較沒有變量賦值的類實例
class A(object):
pass
print id(A()), id(A()) # 139865221604432 139865221604432
print id(A()) == id(A()) # True
print A() is A() # False
a1 = A()
print id(a1) # 139865221604432
a2 = A()
print id(a2) # 139865220638096
所以,問題是爲什麼第一個印刷例如ID號是兩個實例相同。當我們看看A() is A()
時,我們可以看到所有的都是'好的',結果是False。不確定,但它可以處理垃圾收集?
又如:
class B(object):
def __init__(self):
self.msg = 'Some default message'
print id(self)
def do_smth(self, msg):
self.msg = msg
def get_msg(self):
return self.msg
然後我們有兩種情況。
1:
B().do_smth(B().get_msg() + ' add')
第二
b = B()
b.do_smth(b.get_msg() + ' add')
據我瞭解的第二種方法是更加理想,因爲我們沒有創建兩個實例像在第一個。但是當我們遇到第一種方法時,有沒有什麼有趣的案例?