2013-06-02 61 views
5

Ví dụ, trong đoạn mã sau:Tại sao một lớp học được gọi là "được gọi" khi không được bắt đầu? - Python

class test: 
    print "Hi" 

Python sẽ tự động in 'hi'. Xin lỗi nếu đây là một câu hỏi rõ ràng, nhưng tôi không thể tìm ra lý do tại sao Python sẽ làm điều đó trừ khi một đối tượng 'thử nghiệm' được bắt đầu. * Tôi mới bắt đầu lập trình nói chung vài tháng trước và Python là ngôn ngữ đầu tiên của tôi, vì vậy hãy dành chút lòng thương xót cho tôi.

Trả lời

7

Bạn đang xây dựng một lớp học; phần thân của một lớp được thực hiện như một hàm để xây dựng định nghĩa. Không gian tên cục bộ của 'hàm' đó tạo thành tập các thuộc tính tạo nên lớp. Xem tài liệu class statement.

Phương pháp trong thân lớp không được thực thi; như định nghĩa chức năng, trước tiên bạn cần phải gọi chúng. Nhưng nếu trước tiên bạn không gọi cơ thể lớp, bạn không biết phương thức nào của lớp đó.

Trong cùng một cách, bất kỳ mã cấp cao nhất trong một mô-đun được thực hiện khi bạn nhập một mô-đun, để tạo thành không gian tên mô-đun. Nếu bạn đặt print "Hi" trong một mô-đun, nó cũng được thực hiện ngay lập tức.

+0

Tôi không nghĩ rằng nội dung của một lớp được thực hiện như một hàm. Tôi tin rằng nó được thực hiện khi nó gặp phải (hoặc ngay sau khi kết thúc nó). Ngoài ra, khi bạn gọi một lớp sau, sau khi định nghĩa của nó, bạn đang thực sự gọi hàm '__init __()' của nó (hoặc là lớp cơ sở của nó, nếu nó không định nghĩa riêng của nó). – martineau

Các vấn đề liên quan