Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Giả sử có một loại A với hàng tá phương pháp. Đối với các mục đích của tôi, tôi chỉ cần 2 hoặc 3 phương pháp "thú vị" của lớp A trong lớp mới của tôi B. Hơn nữa, tôi muốn mở rộng lớp B với một số phương pháp của riêng tôi. Kế thừa thường được thực hiện với lớp B (a): Phương thức def1 (): ... Phương thức def2 (): ... Nhưng sau đó tôi có một loạt các phương pháp thừa của A In B. Có cách nào tôi có thể chọn một số Các phương thức từ tương tự như trong thông báo nhập khẩu, nơi tôi có thể giới hạn các phương thức được truy cập, do đó để nói một kế thừa một phần. Tôi muốn có một cái gì đó là lớp B (từ một phương thức lấy, methody): def newmethod1 (): ... def newmethod2 (): ... def newmethod3 (): ...

Kế thừa đại diện cho một mối quan hệ "là", tức là lớp B là loại A (một con chó là động vật có vú). Có thể là thiết kế của bạn không chính xác, nếu lớp kế thừa của bạn không cần hầu hết chức năng của cha mẹ. Thay vào đó, bạn có thể xem xét thành phần, các phương pháp B thực sự của đối tượng? (ví dụ: chó có thể ăn và đi, nhưng không nên 'fillbowl' thuộc về chủ sở hữu?) Một quá. Đây là một cách khác để chia sẻ mã mà không có cây kế thừa cloated và truy cập vào các phương pháp mà bạn có thể không nên

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Ví dụ: trong Thư viện Paramiko SSH Có một lớp máy chủ và bạn có thể thực hiện nó như kiểm tra lớp (paramiko.serverinterface): và bạn không cần __init__ để sử dụng lớp nhưng nó sẽ tự động chạy các lệnh chính trong paramiko.serverinterface .__ init__ Tôi hy vọng điều này đã giúp được :)

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Đây là giải pháp cho vấn đề của bạn. Lớp xe (): def__init __ (tự, xe, màu sắc, giá cả): self.car = car self.colour = color self.price = price class newcar (xe): def__init __ (tự, xe, màu, giá, acc): Super () .__ init __ (màu, giá) self.car = car self.acc = acc ở đây lớp newcar chỉ lấy hai thuộc tính 2 từ lớp xe nhưng lớp xe có 3 thuộc tính.

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Nếu hai lớp có một số phương pháp chung, có vẻ như tự nhiên đối với tôi rằng chúng nên là các lớp con của một tầng lớp thượng lưu. Sau đó, bạn đặt mọi phương pháp ở vị trí đúng của nó. Nhưng tôi không biết câu trả lời cho câu hỏi thực tế của bạn: P

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Không có phương pháp nào chỉ kế thừa chỉ một hoặc hai phương thức hoặc chức năng từ một lớp nhất định và lý do là chúng ta có thể thừa hưởng toàn bộ lớp và gọi các phương thức hoặc chức năng cần thiết từ lớp đến lớp mà chúng ta cần Chúng tôi chỉ thừa hưởng một hoặc hai phương pháp.

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

@ Scorpia tăng nhưng những gì, nếu đó là một lớp Python được xây dựng, ví dụ: lớp danh sách?

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Ếch Bạn có thể có cả hướng đối tượng và lập trình chức năng cùng một lúc. Python có thể không phải là tốt nhất nhưng bạn thực sự có thể viết phần lớn ứng dụng với các đối tượng

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Lớp A: def __init __ (self, item1, item2): self.Item1 = item1 self.Item2 = item2 class B (a): def kế thừa (self): result = list ([self.item1, self.item2]) return Kết quả c = b ("1", "2") d = c.Inerit () print (d)

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Đối với vấn đề này, bạn không cần thừa kế. Những gì bạn cần là rụng một lớp vào B và chỉ thực hiện các phương pháp cần thiết: Lớp B: def __init __ (self) self._a = a () def func1 (arg): self._a.func1 (arg) def func2 (arg) : self._a.func2 (arg) Trong phương pháp này, khi bạn tạo lớp OBJ của lớp B, bạn sẽ chỉ có func1 () và func2 () có sẵn để xem và sử dụng. Và đó là những gì bạn muốn;) Hãy tận hưởng!

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Cắt nó và dán nó vào lớp học mới của bạn

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Sẽ có bất kỳ vấn đề tốc độ nếu bạn thừa hưởng toàn bộ lớp A?

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Dan Walker bây giờ JavaScript đánh bại Python trong chủ đề này ... Chúng tôi có một phương pháp siêu

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Nếu bạn tạo ra một lớp được kế thừa từ một lớp xây dựng, bạn cũng có thể kế thừa mọi thứ sau đó ghi đè lên những gì bạn muốn. Có thể phải mất một vài dòng, nhưng tôi sẽ được tổ chức.

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Tôi không biết làm thế nào để làm điều đó. Tôi chỉ sao chép phương thức từ lớp A và dán vào lớp B (tôi không giỏi trong Python nên tôi không biết nếu điều đó có thể)

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Nếu có nhu cầu kế thừa chỉ một vài phương pháp, thì đó là một chỉ số cho thấy thiết kế không tối ưu. Rõ ràng giao diện có ý nghĩa hơn. Tôi sẽ thiết kế lại dự án và ngừng đi sai cách (và đã làm nó nhiều lần)

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Dan Walker đúng vậy. Ưu điểm từ Python so với các ngôn ngữ C mặc dù là lập trình chức năng, một đặc quyền từ Python (liên quan đến C's. Có một vài ngôn ngữ khác cung cấp cho bạn lập trình chức năng).

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Không có metod như vậy trong Python. thử ctrl+c & ctrl+v

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Theo như tôi biết, bạn có thể chọn và chọn chức năng cha mẹ khi kế thừa một lớp Python. Tôi cũng không nghĩ bạn có thể làm điều đó trong các ngôn ngữ định hướng đối tượng khác.

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Tôi nghĩ rằng câu hỏi cần một mã ví dụ, không nhiều văn bản.

Hướng dẫn python inherit only some methods - python chỉ kế thừa một số phương thức

Các phương pháp có được kế thừa trong Python không?

Kế thừa cho phép chúng tôi xác định một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác. Lớp cha là lớp được kế thừa, còn được gọi là lớp cơ sở. Lớp con là lớp kế thừa từ một lớp khác, còn được gọi là lớp dẫn xuất.. Parent class is the class being inherited from, also called base class. Child class is the class that inherits from another class, also called derived class.

Python có hỗ trợ tất cả sự kế thừa không?

Kế thừa là một tính năng cần thiết của mọi ngôn ngữ lập trình hướng đối tượng.Điều này có nghĩa là Python hỗ trợ thừa kế và như bạn sẽ thấy sau này, đó là một trong số ít ngôn ngữ hỗ trợ nhiều kế thừa.Python supports inheritance, and as you'll see later, it's one of the few languages that supports multiple inheritance.

Các lớp con có kế thừa các thuộc tính python không?

Một lớp con được thừa hưởng tất cả các thuộc tính (phương thức, v.v.) của lớp cha.Chúng ta có thể tạo các thuộc tính hoặc phương thức mới để thêm vào hành vi của cha mẹ, chúng ta có thể thay đổi (ghi đè lên) một số hoặc tất cả các thuộc tính hoặc phương thức để thay đổi hành vi.. We can create new attributes or methods to add to the behavior of the parent We can change (“override”) some or all of the attributes or methods to change the behavior.

Là nhiều kế thừa Pythonic?

Có, Python hỗ trợ nhiều kế thừa.Giống như C ++, một lớp có thể được lấy từ nhiều lớp cơ sở trong Python.Điều này được gọi là nhiều kế thừa.. Like C++, a class can be derived from more than one base classes in Python. This is called Multiple Inheritance.