Tôi đang đọc về các lớp trong Python (3.4) và từ những gì tôi hiểu có vẻ như mọi đối tượng mới đều có các cá thể phương thức ràng buộc riêng của nó.Python có thực sự tạo ra tất cả các phương pháp ràng buộc cho mỗi cá thể mới không?
class A:
def __init__(self, name):
self.name = name
def foo(self):
print(self.name)
a = A('One')
b = A('Two')
print(a.foo == b.foo)
Kết quả đầu ra là False
.
Điều này có vẻ với tôi như một sự lãng phí bộ nhớ. Tôi nghĩ rằng trong nội bộ a.foo
và b.foo
sẽ chỉ bằng cách nào đó trong nội bộ để một chức năng trong bộ nhớ: A.foo
nơi self
như cá thể lớp sẽ được thông qua.
Tôi giả định này có lẽ không thể được thực hiện dễ dàng bằng ngôn ngữ.
Liệu mỗi trường hợp mới cũng chứa trường hợp mới của phương pháp ràng buộc của nó?
Nếu vậy, điều này không làm ảnh hưởng đến hiệu suất hoặc tạo ra trường hợp để tạo đối tượng mới thận trọng hơn các ngôn ngữ khác mà phương pháp "chia sẻ" giữa các đối tượng như trong Java
?
Bạn có thể liên kết đến nội dung bạn đã đọc khiến bạn nghĩ vậy không? –
@SotiriosDelimanolis 'X(). F == X.f' sẽ dẫn đến' False' (trong đó f là phương thức instace). Điều này là đủ để làm cho một người nghĩ như vậy. –
Mỗi phương pháp bị ràng buộc, mặc dù, tham chiếu cùng chức năng cơ bản. Chi phí bộ nhớ cho trình bao bọc là tối thiểu. – chepner