Chào mừng bạn đến với Python! Bạn là một chặng đường dài từ C++ và Java, và đó là một điều tốt. ;)
Đây là một đoạn trích từ một excellent discourse on object-oriented programming bởi another StackOverflow volunteer:
nhanh: ra khỏi đỉnh đầu của bạn, lập trình hướng đối tượng về là gì?
...
Nếu bạn nghĩ rằng bất kỳ dòng chữ “đóng gói”, “thừa kế”, “đa hình”, “che giấu thông tin”, “trừu tượng”, hoặc “vtables”, bạn có sai.
Nếu bạn nghĩ bất kỳ từ nào trong “từ”, “nguyên mẫu” hoặc “loại”, bạn là vẫn sai.
Lập trình hướng đối tượng là khoảng đối tượng: nhóm trạng thái và hành vi.
Tại sao tôi trích dẫn nội dung này? (Vâng, đối với một, nó là Pythonic để thích những lời châm biếm biểu cảm mà bạn có thể nhận được đằng sau thông điệp.) Bởi vì trong đó có câu trả lời cho câu hỏi của bạn.
"Chức năng tiện ích" của bạn có thực sự đại diện cho một số hành vi có thể được biểu thị độc đáo (từ khóa) làm đối tượng cha mẹ trong chế độ thừa kế thừa kế không? Sau đó, bằng mọi cách, đặt nó trong một lớp học. Nhưng không phải nếu điều đó có nghĩa là tạo một lớp chỉ để đặt nó trong.
Bạn đang luôn tham gia lập trình hướng đối tượng khi bạn đang viết Python, bởi vì tất cả mọi thứ bằng Python là một đối tượng. (Xem xét rằng bạn thậm chí có thể gọi các phương thức trên literals, ví dụ: 'hello'.upper()
.) Nếu bạn nheo mắt theo một cách nào đó, bạn có thể nghĩ ngay cả các mô-đun của mình chỉ là bên trong định nghĩa lớp. Chúng có phạm vi riêng của chúng, có thể là các hàm mức module (module "các phương thức" nếu bạn đang theo dõi sự tương tự của tôi), và có thể là các lớp bên trong. Hành vi này cực kỳ giống nhau vì nó chủ yếu là cùng một giao diện.
tôi đề nghị bạn có một cái nhìn qua thư mục site-packages
của bạn tại tất cả các mô-đun và gói sẵn. Bạn sẽ nhận được một số ý tưởng thực sự tốt như thế nào điều này thường được thực hiện, và bạn có thể sẽ thấy hàng chục ví dụ về chức năng cấp mô-đun được nhiều hơn hoặc ít hơn những gì bạn đang đề cập đến khi bạn nói "chức năng tiện ích".
Chỉ cần sử dụng phạm vi mô-đun. http://dirtsimple.org/2004/12/python-is-not-java.html – PaulMcG
Thêm đối tượng được định hướng không phải là mục tiêu.Nếu sự cố xảy ra với các đối tượng, hãy viết các lớp. Nếu không, đừng. –
Tại sao họ thậm chí còn gọi nó là ** lập trình hướng đối tượng **? Tất cả những ai từng muốn nói về là ** lớp **. –