Mục đích của self
từ trong Python là gì? Tôi hiểu rằng nó đề cập đến đối tượng cụ thể được tạo từ lớp đó, nhưng tôi không thể hiểu tại sao nó cần được thêm rõ ràng vào mọi hàm như một tham số. Để minh họa, trong Ruby tôi có thể làm điều này:
class myClass
def myFunc(name)
@name = name
end
end
Mà tôi hiểu, khá dễ. Tuy nhiên, trong Python tôi cần bao gồm self
:
class myClass:
def myFunc(self, name):
self.name = name
Bất cứ ai có thể nói chuyện với tôi thông qua điều này? Đó không phải là điều tôi đã gặp trong trải nghiệm (bị giới hạn) của tôi.
@name
trực quan hơn self.name
? Cái sau, IMO, trực quan hơn.
@foo
và self.foo
rõ ràng như nhau vì không cần phải giải quyết ngầm định (ví dụ: trong C ++, các thành viên thể hiện có thể được truy cập "ngầm" mà không "rõ ràng" sử dụng không gian tên). Sự khác biệt duy nhất là Ruby giới thiệu một ngữ nghĩa mới (@), trong khi Python thì không. Việc một ngữ nghĩa mới có đáng hay không với mức độ dài dòng tránh được hoàn toàn chủ quan. Mặc dù vậy, cần lưu ý rằng hầu hết các ngôn ngữ hiện đại đều chọn giới thiệu một khái niệm ở đây (ví dụ: php's $ this, JS's this).