01/10/2018, 09:18

Giúp sửa lỗi <bound method trong class Python

Bác nào rành giúp mình vụ này với bây giờ mình có cái class Rectangle, trong hàm tạo không có thuộc tính là area mà bây giờ viết làm sao để khi gọi thuộc tính đó trong str thì không bị lỗi bây giờ.

viết thêm hàm tính area() thì bị lỗi khi gọi self.area và phải thêm "() vào self.area() vào nếu không bị lỗi

Nói tóm lại là làm sao không thêm self.area trong init nhưng viết làm sao để khi gọi self.area trong hàm str thì không bị lỗi @.@ mà cho mình hỏi luôn mấy cái ( _name_ ) trong class nó gọi là gì thế ? Tìm phần nào trong sách để đọc ?

Lương Quang Mạnh viết 11:25 ngày 01/10/2018

Bạn không muốn thêm self.area vào self.__init__ như một thuộc tính, cũng không muốn gọi nó như một phương thức. OK, hiệu quả nhất thì có thể làm thế này:

class Rectangle:
    ...
    @property
    def area(self):
        return self.width * self.height

arect = Rectangle(10, 5)
print(arect.area)  # 50

P/s: Văn phạm lủng củng quá, cần rút kinh nghiệm.

NG viết 11:23 ngày 01/10/2018
def __str__(self):
        return '{} x {} = {}'.format(self.height, self.width, self.height*self.width)

cái thứ 2 : nếu area là def

def __str__(self):
        return '{} x {} = {}'.format(self.height, self.width, self.area())
Bài liên quan
0