Hướng dẫn are properties inherited in python? - các thuộc tính có được kế thừa trong python không?
Tôi có một lớp cơ sở với một thuộc tính (phương pháp GET) tôi muốn ghi đè lên lớp con. Suy nghĩ đầu tiên của tôi là một cái gì đó như: Show
Điều này không hoạt động (thanh phân lớp con.age trả về 11). Tôi đã tìm thấy một giải pháp với biểu thức Lambda hoạt động:
Vì vậy, đây có phải là giải pháp phù hợp để sử dụng các thuộc tính và ghi đè chúng theo một lớp con, hoặc có những cách ưa thích khác để làm điều này? Đã hỏi ngày 26 tháng 10 năm 2008 lúc 2:49Oct 26, 2008 at 2:49
Peter Hoffmannpeter HoffmannPeter Hoffmann 54.2K15 Huy hiệu vàng74 Huy hiệu bạc58 Huy hiệu đồng15 gold badges74 silver badges58 bronze badges Tôi chỉ đơn giản thích lặp lại 7 cũng như bạn sẽ lặp lại trình trang trí 8 khi ghi đè một phương thức lớp.Mặc dù điều này có vẻ rất dài dòng, ít nhất là đối với các tiêu chuẩn Python, bạn có thể nhận thấy: 1) Đối với các thuộc tính chỉ đọc, 9 có thể được sử dụng làm người trang trí:
2) Trong Python 2.6, các thuộc tính đã phát triển một cặp phương thức 0 và 1 có thể được sử dụng để áp dụng cho các thuộc tính chung, phím tắt đã có sẵn cho các loại chỉ đọc:
Neil g 31.2K39 Huy hiệu vàng150 Huy hiệu bạc251 Huy hiệu Đồng39 gold badges150 silver badges251 bronze badges Đã trả lời ngày 26 tháng 10 năm 2008 lúc 10:50Oct 26, 2008 at 10:50
Piropiropiro 12.9k5 Huy hiệu vàng34 Huy hiệu bạc35 Huy hiệu Đồng5 gold badges34 silver badges35 bronze badges 3 Tôi không đồng ý rằng câu trả lời đã chọn là cách lý tưởng để cho phép ghi đè các phương thức thuộc tính. Nếu bạn mong đợi các getters và setters sẽ bị ghi đè, thì bạn có thể sử dụng Lambda để cung cấp quyền truy cập vào bản thân, với một cái gì đó như 2.Điều này hoạt động (ít nhất) cho các phiên bản Python 2.4 đến 3,6. Nếu bất cứ ai biết cách làm điều này bằng cách sử dụng thuộc tính làm người trang trí thay vì gọi là một cuộc gọi trực tiếp (), tôi muốn nghe nó! Example:
Bằng cách này, có thể dễ dàng thực hiện ghi đè:
để có thể:
Tôi phát hiện ra điều này trên Geek tại Play. Đã trả lời ngày 16 tháng 1 năm 2013 lúc 0:55Jan 16, 2013 at 0:55
Ông BMR. BMr. B 2.4251 Huy hiệu vàng24 Huy hiệu bạc24 Huy hiệu đồng1 gold badge24 silver badges24 bronze badges 1 Một cách khác để làm điều đó, mà không phải tạo bất kỳ lớp bổ sung nào. Tôi đã thêm một phương thức SET để hiển thị những gì bạn làm nếu bạn chỉ ghi đè một trong hai:
Đây là một ví dụ khá giả tạo, nhưng bạn nên có ý tưởng. Đã trả lời ngày 14 tháng 11 năm 2008 lúc 22:52Nov 14, 2008 at 22:52
Kamil Kisielkamil KisielKamil Kisiel 19.1k11 Huy hiệu vàng46 Huy hiệu bạc54 Huy hiệu đồng11 gold badges46 silver badges54 bronze badges 3 Vâng, đây là cách để làm điều đó; Tuyên bố thuộc tính thực thi tại thời điểm định nghĩa của lớp cha được thực thi, điều đó có nghĩa là nó chỉ có thể "xem" các phiên bản của các phương thức tồn tại trên lớp cha. Vì vậy, khi bạn xác định lại một hoặc nhiều trong số các phương thức đó trên lớp trẻ, bạn cần khai báo lại thuộc tính bằng phiên bản (các) phương thức của lớp con. Đã trả lời ngày 26 tháng 10 năm 2008 lúc 3:07Oct 26, 2008 at 3:07
James Bennettjames BennettJames Bennett 10,7K4 Huy hiệu vàng35 Huy hiệu bạc24 Huy hiệu đồng4 gold badges35 silver badges24 bronze badges Một cách giải quyết khả dĩ có thể trông giống như:
Nó in
Có ý tưởng từ "Cookbook Python" của David Beazley & Brian K. Jones. Sử dụng Python 3.5.3 trên Debian GNU/Linux 9.11 (kéo dài) Đã trả lời ngày 4 tháng 1 năm 2020 lúc 19:45Jan 4, 2020 at 19:45
Tôi đồng ý với giải pháp của bạn, có vẻ như là một phương pháp mẫu trên đường bay. Bài viết này liên quan đến vấn đề của bạn và cung cấp chính xác giải pháp của bạn. Đã trả lời ngày 26 tháng 10 năm 2008 lúc 3:01Oct 26, 2008 at 3:01
Một cái gì đó như thế này sẽ hoạt động 0Đã trả lời ngày 26 tháng 10 năm 2008 lúc 3:17Oct 26, 2008 at 3:17
KozyarchukkozyarchukKozyarchuk 20.2K14 Huy hiệu vàng40 Huy hiệu bạc46 Huy hiệu đồng14 gold badges40 silver badges46 bronze badges 2 Giống như @Mr-B's nhưng với người trang trí. 1Bằng cách này, có thể dễ dàng thực hiện ghi đè:
để có thể:May 20, 2016 at 21:11
Tôi phát hiện ra điều này trên Geek tại Play. 3Đã trả lời ngày 16 tháng 1 năm 2013 lúc 0:55Jun 2, 2015 at 15:52
Ông BMR. Bandrew pate 2.4251 Huy hiệu vàng24 Huy hiệu bạc24 Huy hiệu đồng33 silver badges23 bronze badges Một cách khác để làm điều đó, mà không phải tạo bất kỳ lớp bổ sung nào. Tôi đã thêm một phương thức SET để hiển thị những gì bạn làm nếu bạn chỉ ghi đè một trong hai: 4Đây là một ví dụ khá giả tạo, nhưng bạn nên có ý tưởng. Đã trả lời ngày 14 tháng 11 năm 2008 lúc 22:52
Kamil Kisielkamil Kisiel 19.1k11 Huy hiệu vàng46 Huy hiệu bạc54 Huy hiệu đồngMay 16, 2021 at 16:29
6Vâng, đây là cách để làm điều đó; Tuyên bố thuộc tính thực thi tại thời điểm định nghĩa của lớp cha được thực thi, điều đó có nghĩa là nó chỉ có thể "xem" các phiên bản của các phương thức tồn tại trên lớp cha. Vì vậy, khi bạn xác định lại một hoặc nhiều trong số các phương thức đó trên lớp trẻ, bạn cần khai báo lại thuộc tính bằng phiên bản (các) phương thức của lớp con. Đã trả lời ngày 26 tháng 10 năm 2008 lúc 3:07Aug 23, 2019 at 3:51
James Bennettjames BennettRobin 10,7K4 Huy hiệu vàng35 Huy hiệu bạc24 Huy hiệu đồng4 bronze badges Những gì được thừa hưởng trong Python?Kế thừa trong Python, nó đề cập đến việc xác định một lớp mới với rất ít hoặc không có sửa đổi cho một lớp hiện có. Lớp mới được gọi là lớp dẫn xuất (hoặc trẻ em) và lớp mà nó thừa hưởng được gọi là lớp cơ sở (hoặc cha mẹ).defining a new class with little or no modification to an existing class. The new class is called derived (or child) class and the one from which it inherits is called the base (or parent) class.
Các lớp con có kế thừa các thuộc tính không?Lớp có thuộc tính và phương thức được kế thừa được gọi là lớp cha.Và lớp kế thừa các thuộc tính từ lớp cha là lớp con.Điều thú vị là, cùng với các thuộc tính và phương pháp di truyền, một lớp con có thể có các thuộc tính và phương pháp riêng.the class that inherits the properties from the parent class is the Child class. The interesting thing is, along with the inherited properties and methods, a child class can have its own properties and methods.
Việc thừa kế nào không được hỗ trợ trong Python?Trả lời: Không giống như các ngôn ngữ lập trình hướng đối tượng khác như Java, Python hỗ trợ tất cả các loại kế thừa, thậm chí nhiều kế thừa!Và mặc dù C ++ cũng hỗ trợ loại kế thừa này, nhưng nó không có cùng cách tiếp cận tinh vi và được thiết kế tốt như Python.
Tài sản () làm gì trong Python?Thuộc tính của Python () là cách pythonic để tránh các phương thức getter và setter chính thức trong mã của bạn.Hàm này cho phép bạn biến các thuộc tính lớp thành thuộc tính hoặc thuộc tính được quản lý.Vì thuộc tính () là một hàm tích hợp, bạn có thể sử dụng nó mà không cần nhập bất cứ thứ gì.allows you to turn class attributes into properties or managed attributes. Since property() is a built-in function, you can use it without importing anything. |