có vấn đề khi hiểu các biến lớp/thể hiện hoạt động như thế nào trong python. Tôi không hiểu tại sao khi tôi thử mã này biến danh sách có vẻ là một biến lớpbiến thể hiện lớp python và biến lớp
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
đầu ra:
['thing']
['thing', 'thing']
và khi tôi làm điều này nó có vẻ là một thể hiện biến
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
đầu ra:
['thing']
['thing']
cảm ơn nhiều
jon
Nếu tôi hiểu chính xác, bạn đang yêu cầu lý do đằng sau quyết định thiết kế cụ thể liên quan đến cú pháp của Python. Đối với những câu hỏi như vậy, câu trả lời hay nhất là "bởi vì nó phù hợp với tinh thần của ngôn ngữ", hoặc nhiều hơn nữa: "hỏi người sáng tạo của nó". – Xion
ok vì vậy biến là biến lớp theo mặc định, đó là nơi mà sự nhầm lẫn của tôi bắt nguồn từ, đó phải là câu hỏi của tôi, làm biến mặc định cho biến lớp –
@jonathantopf Không, biến không phải là biến lớp theo mặc định. Trong Python bạn không khai báo varables. Cho rằng vấn đề, họ không thực sự biến (python là một _variableless_ lanuage), chỉ cần tên. Và bạn không khai báo hoặc assing tên, bạn _bind_ chúng vào một đối tượng. Và mỗi đối tượng trong thời gian chạy có một từ điển tên đối tượng. Và ngay cả khi hai vật thể thuộc cùng một lớp, chúng có thể có các từ điển rất khác nhau. – rodrigo