cách truy cập trang trí từ lớp cơ sở ở trẻ?Truy cập trang trí trong lớp cha từ con trong Python
Tôi giả định (sai) rằng ffg. sẽ làm việc:
class baseclass(object):
def __init__(self):
print 'hey this is the base'
def _deco(func):
def wrapper(*arg):
res = func(*arg)
print 'I\'m a decorator. This is fabulous, but that colour, so last season sweetiedarling'
return res
return wrapper
@_deco
def basefunc(self):
print 'I\'m a base function'
Lớp này hoạt động tốt, nhưng sau đó tôi tạo ra một lớp con kế thừa từ này:
class otherclass(baseclass):
def __init__(self):
super(otherclass, self).__init__()
print 'other class'
@_deco
def meh(self):
print 'I\'m a function'
này thậm chí sẽ không nhập khẩu đúng cách, hãy để một mình chạy. @_deco không xác định. Đang thử baseclass._deco ném một lỗi _deco() của phương thức không ràng buộc, điều này không thực sự đáng ngạc nhiên.
Bất kỳ ý tưởng làm thế nào để làm điều này, tôi thực sự muốn đóng gói trang trí trong lớp, nhưng tôi không kết hôn với ý tưởng và tôi cần phải gọi nó trong cơ sở & lớp con.
Trường hợp sử dụng cho điều này là trang trí thời gian thô cho bộ điều khiển giá treo. Vì vậy, nó cần phải được truy cập từ baseclass vì có các hàm trong đó sẽ phải được tính giờ, và các hàm trong lớp con cần phải được định thời gian. Tôi đoán cách đơn giản nhất là chỉ cần tách nó ra khỏi lớp học. – dochead
Bạn có thể sửa định dạng của mình không? Lớp 'def __init__' của lớp của bạn có cùng độ thụt lề như định nghĩa lớp. – MattH