Tôi khá mới để trăn, và nhận thấy những bài viết: Python __init__ and self what do they do? và Python Classes without using def __init__(self)Tính hữu ích của def __init __ (tự)?
Sau khi chơi đùa với nó, tuy nhiên, tôi nhận thấy rằng hai loại cổ phiếu này cho rõ ràng tương đương results-
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
(từ this question)
và
class B(object):
x = 'Hello'
def method_b(self,foo):
print self.x + ' ' + foo
Có sự khác biệt thực sự nào giữa hai loại này không? Hoặc, nói chung, không __init__
có thay đổi bất kỳ thứ gì vốn có về các thuộc tính của một lớp không? Trong the documentation nó được đề cập rằng __init__
được gọi khi cá thể được tạo ra. Điều này có nghĩa là x
trong lớp B
được thiết lập trước khi khởi tạo?
+1 Đừng quên rằng kể từ khi lớp học các đối tượng bạn có thể thay đổi thuộc tính của lớp, chính nó, bất cứ lúc nào. 'class A: pass; A.lst = list (phạm vi (6))'. – kojiro