Câu hỏi ban đầu của tôi quá mơ hồ và bị "đóng cửa không mang tính xây dựng". Như vậy, tôi sẽ sửa đổi câu hỏi để nó đáp ứng các câu trả lời đã được đăng. :-)Làm thế nào để Moose so sánh với hệ thống OO của Python?
Tôi quan tâm đến sự khác biệt giữa khuôn khổ Moose OO của Perl Moose và khung OO cổ phiếu của Python. Là một điểm so sánh đầu tiên, việc tạo một lớp đơn giản với một vài thuộc tính và một số phương thức dễ dàng như thế nào?
Bây giờ, nếu câu hỏi này được mở lại, tôi cũng muốn biết: Mã tái cấu trúc trong tương lai dễ dàng như thế nào nếu tôi quyết định tạo thuộc tính "chỉ đọc"? Nói cách khác, tôi sẽ phải thực hiện các bước nào để thay đổi một thuộc tính khỏi khả năng đọc và ghi được để chỉ đọc? (Tôi biết, thật tệ khi thay đổi một API, nhưng hãy giả sử tôi đang làm việc trên một cái gì đó nội bộ và nhận ra ở giữa việc thực hiện của tôi rằng một thuộc tính thực sự phải là chỉ đọc.)
Điều này thật thú vị khi xem xét rằng Perl đã lấy nhiều hệ thống đối tượng ban đầu của nó từ Python. Gọi là tuyệt vời của Python là một cái nhìn rất tò mò. – tsee
Nhận xét này không có ý nghĩa gì về ánh sáng của bản chỉnh sửa mới nhất của tôi. Ban đầu, tôi đã nói rằng tôi đã nghe nói rằng OO của Python rất tuyệt vời. Điều tôi ngụ ý là "Python cung cấp cú pháp để tạo ra một lớp thực sự dễ dàng." –
@David Mertens: Về chỉnh sửa của bạn - Để thay đổi thuộc tính từ đọc/ghi sang chỉ đọc thật dễ dàng. Ví dụ: thay đổi 'has someattr => (is => 'rw');' to 'có someattr => (is => 'ro');' Sau khi thay đổi tất cả các lần cố gắng ghi vào thuộc tính sẽ cho lỗi thời gian chạy, cho ví dụ. '$ x-> someattr (" foo ");' (setter) sẽ ném một lỗi trong khi '$ x-> someattr' (getter) là tốt. – draegtun