01/10/2018, 16:41

Hướng đối tượng trong python

  1. về tính kế thừa
  • làm sao để dùng HÀM KHỞI TẠO MẶC ĐỊNH của lớp con mà vẫn giữ lại các thuộc tính của lớp cha
    ví dụ: lớp cha có các thuộc tính là a,b,c. nếu lớp con muốn có thêm thuộc tính là d,e. tổng cộng lớp con có các thuộc tính a,b,c,d,e.
    theo mình làm, thì thấy nếu dùng lớp con dùng hàm khởi tạo mặc định thì nó mất đi các thuộc tính của lớp cha là a,b,c.

2 ) về gọi hàm: làm sao để cho một hàm do mình định nghĩa tự động chạy khi mình khởi tạo một đối tượng.
ví dụ khởi tạo đối tượng a thuộc lớp sinh viên
a=sinhvien()
thì cái hàm sum của lớp sinhvien tự động chạy.
KHÔNG CẦN dùng a.sum().nói chung là mình mong muốn có 1 cái hàm sum tự động chạy khi ta khởi tạo đối tượng thuộc lớp sinhvien.
có cách nào khác ngoài cách mà nhét cái hàm sum vào hàm khởi tạo mặc định k ạ

em đang học OOP trong python.
nếu có điều gì hiểu sai, mong các bác giúp @@

Hieu Phan Long viết 18:50 ngày 01/10/2018

có code không bạn , cho mình xin để dễ tìm lỗi hơn

Bùi Ngọc Tài viết 18:42 ngày 01/10/2018

mình đang thắc chỗ ý tưởng để thực hiện 2 mục đích trên à bạn.
bạn có thể trả lời k cần code dc chứ nhỉ

HK boy viết 18:54 ngày 01/10/2018

a=sinhvien()
thì cái hàm tính tiền học phí của lớp sinhvien tự động chạy.
KHÔNG CẦN dùng a.sum()

Trong __init__, sau khi nạp học phí xong, bạn tính tổng luôn.

def __init__(self):
    # nạp học phí
    # gọi hàm tính tổng

Quan trọng là bây giờ bạn định nạp học phí như thế nào?

Bùi Ngọc Tài viết 18:44 ngày 01/10/2018

mình mới edit bài viết lại á, mình viết vậy chắc bạn đọc hơi khó hiểu
nói chung là mình mong muốn có 1 cái hàm sum tự động chạy khi ta khởi tạo đối tượng thuộc lớp sinhvien.
có cách nào mà k nhét cái hàm sum vào hàm khởi tạo mặc định k ạ

HK boy viết 18:41 ngày 01/10/2018

có cách nào khác ngoài cách mà nhét cái hàm sum vào hàm khởi tạo mặc định k ạ

Không. Bạn không nhét nó vào thì làm sao nó chạy được.


theo mình làm, thì thấy nếu dùng lớp con dùng hàm khởi tạo mặc định thì nó mất đi các thuộc tính của lớp cha là a,b,c.

Thêm 1 dòng super().__init__() nữa. Magic chưa

Demo:

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

Bài liên quan
0