Giúp một anh chàng ra ngoài. Có vẻ như không thể có được một trang trí để làm việc với thừa kế. Đập nó xuống ví dụ đơn giản nhất trong không gian làm việc của tôi. Vẫn không thể làm cho nó hoạt động được.Trang trí và thừa kế của Python
class bar(object):
def __init__(self):
self.val = 4
def setVal(self,x):
self.val = x
def decor(self, func):
def increment(self, x):
return func(self, x) + self.val
return increment
class foo(bar):
def __init__(self):
bar.__init__(self)
@decor
def add(self, x):
return x
Rất tiếc, tên "trang trí" không được xác định.
Được rồi, khoảng @bar.decor
? TypeError: phương thức "trang trí" không được ràng buộc phải được gọi với một đối tượng thanh làm đối số đầu tiên (có thể thay thế hàm)
Ok, làm thế nào về @self.decor
? Tên "tự" không được xác định.
Ok, cách khoảng @foo.decor
?! Tên "foo" không được xác định.
AaaaAAaAaaaarrrrgggg ... Tôi đang làm gì sai?
Trong ví dụ của bạn, bạn có thể có 'trở x + self.val' cho định nghĩa của' add' trong 'foo'. Bạn không thể làm điều này trong mã thực tế của bạn? –
Đây là mã ví dụ chưng cất làm nổi bật vấn đề tôi đang gặp phải. Nếu mã đơn giản, thì có. Tuy nhiên, nó không phải. – wheaties