Hướng dẫn pass class to class python - chuyển lớp sang lớp trăn
Tôi đang gặp một số rắc rối với các lớp học vào lúc này và tôi không chắc chắn làm thế nào để giải quyết vấn đề của mình. Tôi đã đọc các tài liệu và tôi không thể kết nối bất cứ điều gì nói ở đó với vấn đề tôi đang gặp phải. Show
Tôi đang cố gắng thực hiện một số lớp học đơn giản cho một trò chơi. Tôi có một lớp học vũ khí và một lớp học. Tôi đang cố gắng truyền một vũ khí cho lớp người (tôi hy vọng điều này có ý nghĩa), để người đó (Bob) có thể sử dụng vũ khí. Tôi đang gặp khó khăn khi truy cập các phương thức và thuộc tính trong lớp vũ khí. Tôi đã coi việc biến người thành một lớp vũ khí trẻ em để nó có thể gọi phương pháp một cách dễ dàng, nhưng điều đó dường như không trực quan với tôi. . .
Chạy cái này mang lại cho tôi:
Running:
Gives:
Câu hỏi của tôi là, tôi có phải chuyển đối tượng vũ khí một cách chính xác cho lớp người không? Có vẻ như vũ khí viết kỳ lạ.Ranged_Weapon trong _init__ thay vì self.ranged_weapon. Làm thế nào tôi có thể lấy Display_WEAPON_INFO để hiển thị 'Tên vũ khí: Súng ngắn', chứ không phải là tham chiếu? Nó dường như hoạt động khi tôi gọi nó trong Ranged_attack, nhưng không có trong thông tin hiển thị. Thực sự đánh giá cao bất kỳ sự giúp đỡ tôi có thể nhận được với điều này. Xin lỗi nếu một câu hỏi tương tự đã được hỏi trước đây, nhưng tôi không thể tìm thấy bất cứ điều gì tôi có thể liên quan đến vấn đề của mình. Giàu có
Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn. Vẫn chưa có tài khoản? Đăng ký tại đây. Làm thế nào để thừa kế lớp hoạt động trong Python? Tạo một lớp kế thừa từ một lớp khácChúng tôi có một lớp gọi là 6, kế thừa từ một lớp khác, 7 (nằm trong mô -đun 8 trong thư viện tiêu chuẩn Python):
Cách chúng ta biết chúng ta đang kế thừa từ lớp 7 bởi vì khi chúng ta xác định 6, ngay sau tên lớp, chúng ta đặt dấu ngoặc đơn và viết 7 bên trong chúng.Để tạo một lớp kế thừa từ một lớp khác, sau tên lớp, bạn sẽ đặt dấu ngoặc đơn và sau đó liệt kê bất kỳ lớp nào mà lớp của bạn kế thừa.parentheses and then list any classes that your class inherits from. Trong một định nghĩa chức năng, dấu ngoặc đơn sau tên hàm biểu thị các đối số mà hàm chấp nhận. Trong một định nghĩa lớp, dấu ngoặc đơn sau tên lớp thay vì đại diện cho các lớp được kế thừa.function definition, parentheses after the function name represent arguments that the function accepts. In a class definition the parentheses after the class name instead represent the classes being inherited from. Thông thường khi thực hành kế thừa lớp học trong Python, chúng tôi thừa hưởng chỉ từ một lớp. Bạn có thể kế thừa từ nhiều lớp (được gọi là nhiều kế thừa), nhưng nó hơi hiếm. Chúng tôi sẽ chỉ thảo luận về kế thừa hạng đơn ngay bây giờ.just one class. You can inherit from multiple classes (that's called multiple inheritance), but it's a little bit rare. We'll only discuss single-class inheritance right now. Phương pháp được kế thừa từ các lớp phụ huynhĐể sử dụng lớp 6 của chúng tôi, chúng tôi có thể gọi nó (giống như bất kỳ lớp nào khác):
Lớp của chúng tôi sẽ chấp nhận một chuỗi khi chúng tôi gọi nó vì lớp 7 đã triển khai phương thức 4 (phương thức khởi tạo).Lớp của chúng tôi cũng có phương thức 5 cho một biểu diễn chuỗi đẹp:
Nó thậm chí còn có một loạt các chức năng khác quá. Ví dụ, nó đã ghi đè lên những gì xảy ra khi bạn sử dụng dấu ngoặc vuông để gán các cặp giá trị khóa trên các phiên bản lớp:
Chúng ta có thể gán các cặp giá trị khóa vì lớp cha của chúng ta, 7 tạo ra các đối tượng giống như từ điển (ánh xạ a.k.a.).Tất cả các chức năng đó được kế thừa từ lớp 7.inherited from the 7 class.Thêm chức năng mới trong khi kế thừaVì vậy, lớp 6 của chúng tôi thừa hưởng tất cả các chức năng mà lớp 7 của chúng tôi có nhưng chúng tôi cũng đã mở rộng nó bằng cách thêm một phương thức bổ sung, 0, sẽ cung cấp cho chúng tôi mục phổ biến nhất trong lớp.Khi chúng tôi gọi phương thức 0, chúng tôi sẽ nhận được chữ 2 (xảy ra ba lần trong chuỗi chúng tôi ban đầu cho đối tượng 6 của chúng tôi):
Phương pháp 0 của chúng tôi dựa trên phương thức 5 mà chúng tôi không xác định nhưng lớp cha mẹ của chúng tôi, 7, đã xác định:
Lớp 6 của chúng tôi có phương pháp 8 vì lớp cha của chúng tôi, 7 đã xác định nó cho chúng tôi!Ghi đè các phương pháp kế thừaNếu chúng tôi muốn tùy chỉnh những gì xảy ra khi chúng tôi gán cho một cặp giá trị khóa trong lớp này, chúng tôi có thể làm điều đó bằng cách ghi đè phương thức 0. Ví dụ: hãy làm cho nó để nếu chúng ta gán một khóa cho một giá trị âm, thay vào đó, nó gán nó cho 1.Trước khi chúng tôi gán 2 cho 3, chúng tôi muốn nó được đặt thành 1 thay vì 3 (đó là 3 ở đây vì chúng tôi chưa tùy chỉnh điều này): 0Để tùy chỉnh hành vi này, chúng tôi sẽ thực hiện một phương thức 0 chấp nhận 8, 9 và 0 vì đó là những gì 0 được Python đưa ra khi nó được gọi là: 1Phương pháp 0 trên về cơ bản nói: Nếu 0 âm tính, hãy đặt nó thành 1.Nếu chúng tôi ngừng viết 0 tại thời điểm này, nó sẽ không hữu ích. Trên thực tế, phương pháp 0 sẽ không làm gì cả: nó sẽ không gây ra lỗi, nhưng nó cũng không thực sự làm gì cả!Để làm điều gì đó hữu ích, chúng ta cần gọi phương thức 0 của lớp cha. Chúng ta có thể gọi phương thức 0 của lớp cha của chúng ta bằng cách sử dụng 9. 2Chúng tôi đang gọi 0, sẽ gọi phương thức 0 trên lớp cha của chúng tôi ( 7) với 9 và 0 không âm mới của chúng tôi.Dưới đây là triển khai đầy đủ phiên bản mới này của lớp 6 của chúng tôi: 3Để sử dụng lớp này, chúng tôi sẽ gọi nó và chuyển trong một chuỗi một lần nữa:
Nhưng lần này, nếu chúng ta gán một khóa cho một giá trị âm, chúng ta sẽ thấy rằng nó sẽ được gán cho 1 thay thế: 5Bài tập lớp cho người mới bắt đầu nâng caoBạn muốn một số thực hành hơn với các lớp học trong Python? Lặn vào đường tập thể dục bao gồm 6 bài tập lớp cho người mới bắt đầu nâng cao. Python Morsels cũng bao gồm hàng chục bài tập khác về các lớp học và Python hướng đối tượng là tốt.6 class exercises for advanced beginners. Python Morsels also includes dozens more exercises on classes and object-oriented Python as well. ✨ Hãy thử lặn vào các bài tập các lớp ✨ Tôi có thể chuyển một lớp học cho một lớp học khác trong Python không?Tạo một lớp kế thừa từ một lớp khác để tạo một lớp kế thừa từ một lớp khác, sau tên lớp, bạn sẽ đặt dấu ngoặc đơn và sau đó liệt kê bất kỳ lớp nào mà lớp của bạn kế thừa. Trong một định nghĩa chức năng, dấu ngoặc đơn sau tên hàm biểu thị các đối số mà hàm chấp nhận.To create a class that inherits from another class, after the class name you'll put parentheses and then list any classes that your class inherits from. In a function definition, parentheses after the function name represent arguments that the function accepts.
Chúng ta có thể chuyển các đối số cho lớp học trong Python không?Một phương thức có thể lấy nhiều đối số, như các đối tượng, biến (có cùng loại dữ liệu hoặc khác nhau) và thậm chí các phương thức khác vì các phương thức Python là các đối tượng hạng nhất.Phương pháp là các đối tượng có thể gọi được để bạn có thể vượt qua chúng, lưu trữ chúng và có thể làm bất cứ điều gì bạn muốn.. Methods are callable objects so you can pass them, store them, and can do whatever you want to.
Chúng ta có thể đưa ra lớp học như một đối số cho một lớp khác không?Chúng ta có thể đưa ra lớp học như một đối số cho một lớp khác không?Chúng ta không thể vượt qua một lớp bên trong hàm như một đối số.Điều này là do lớp chỉ là một loại dữ liệu do con người xác định, gói gọn tất cả các kiểu dữ liệu khác như biến, hàm, phương thức.We cannot pass a class inside the function as an argument. This is because the class is just a human defined data-type that encapsulates all the other datatypes like variables, functions, methods.
Super () hoạt động như thế nào trong Python?Hàm Super () trong Python làm cho kế thừa lớp trở nên dễ quản lý và có thể mở rộng hơn.Hàm trả về một đối tượng tạm thời cho phép tham chiếu đến lớp cha bằng từ khóa Super.Hàm Super () có hai trường hợp sử dụng chính: để tránh việc sử dụng lớp siêu (cha mẹ) một cách rõ ràng.The function returns a temporary object that allows reference to a parent class by the keyword super. The super() function has two major use cases: To avoid the usage of the super (parent) class explicitly. |