01/10/2018, 12:14
Tính kế thừa của Python sai ở đâu?
Mọi người cho mình hỏi mình sai chỗ nào ạ? Mình dùng python2
class Cha:
def __init__(self, ten, tuoi):
self.ten = ten
self.tuoi = tuoi
def daihoc(self):
pass
class Con(Cha):
def __init__(self,ten, tuoi, daihoc):
Super().__init__(ten, tuoi)
self.daihoc = daihoc
con2 = Con('Tien',22 , 'BK')
print(con2.ten)
Bài liên quan
Mình không rành Python cho lắm, nhưng mình thấy có 3 cái chưa đúng. Thứ nhất, hàm super bạn phải cho nó ít nhất một argument. Trong khi bạn không đưa cái nào.
Thứ 2,
super
notSuper
Phải sửa thành
Tiếp cái thứ 3
Trong Python 3.X thì không phân biệt giữa
Và
Nhưng trong Python 2.X, cái đầu tiên được gọi là old style class. Thêm
(object)
gọi là new style class. Và hàmsuper
chỉ chịu nhận một cái new style class.Suy ra bạn phải sửa
class Cha:
thànhclass Cha(object):
và tuyệt đối không đượcclass Cha():
Nhưng mà, mình thấy cách này nó tù lắm, nên chả mấy khi dùng.
Mình có link cho bạn tham khảo thêm:
stackoverflow.com
Example using 'super' In Python2.7
Python super() raises TypeError
Cảm ơn bạn nhiều nhé, Mình hiểu được rồi ^^
bạn có thể xem dùm mình thêm đoạn code này sai ở đâu nữa không?
from abc import ABC, abstractmethod
class Mayin():
# @abstractmethod
# “”“docstring for Mayin”""
def init(self, ID, name, thuonghieu, giathanh):
self.__ID = ID
self.__name = name
self.__thuonghieu = thuonghieu
self.__giathanh = giathanh
# @abstractmethod
def display(self):
print “ID: %r” %self.__ID
print “name: %r” %self.__name
print “thuong hieu: %r” %self.__thuonghieu
print “gia thanh: %r” %self.__giathanh
class MayinKim(Mayin):
“”“docstring for MayinKim”""
def init(self, id, name, thuonghieu, giathanh, sokim):
Mayin.init(ID, name, thuonghieu, giathanh)
self.__sokim = sokim
def display(self):
Mayin.display()
print “so kim: %r” %self.__sokim
class MayinMuc(Mayin):
def init(self, ID, name, thuonghieu, giathanh, loaimuc):
Mayin.init(self, ID, name, thuonghieu, giathanh)
self.__loaimuc = loaimuc
def display(self):
Mayin.display()
print “loai muc: %r” %self.__loaimuc
may1 =MayinMuc(‘1’, ‘print’, ‘Sony’, ‘2000$’, ‘Black’)
may1.display()
Bạn nên nắm rõ con trỏ
self
.Bản chất của nó cũng là một argument thôi.
Đây là code mình sửa, bạn tham khảo.