(Mặc dù câu hỏi này là cụ thể về Flask, nó có thể được khái quát hóa theo tiêu đề)Sử dụng một chức năng trang trí định nghĩa là một thể hiện biến
Tôi đang cố gắng sử dụng app.route()
trang trí Flask của bên trong một lớp. Tuy nhiên, ứng dụng Flask được khởi tạo dưới dạng biến mẫu, tức là self.server
được đặt thành ứng dụng. Điều này có nghĩa là tôi không thể sử dụng trang trí, vì self
không được xác định bên ngoài phương thức được trang trí. Tôi muốn có thể thực hiện những việc sau:
class MyClass:
def __init__(self):
self.server = Flask(__name__)
@self.server.route('/')
def home():
return '<h1>Success</h1>'
Có bất kỳ xung đột nào cho vấn đề này không? Bất kỳ trợ giúp nào cũng được đánh giá rất cao!
Cảm ơn bạn! Điều đó hoạt động hoàn hảo –
Tôi sẽ cho rằng đây không phải là giải pháp hướng tới tương lai, vì cuối cùng bạn sẽ có một phương thức '__init __()' chứa tất cả định nghĩa tuyến đường của bạn và chức năng tương ứng của chúng. Tốt hơn nên sử dụng hàm ['add_url_rule()' (http://flask.pocoo.org/docs/0.12/api/#flask.Flask.add_url_rule), như được giải thích trong câu trả lời của riêng tôi (và @rumdrums ') câu hỏi này. – YellowShark
Trong trường hợp của Flask, đó có lẽ là tốt hơn. Tuy nhiên, đây là một câu hỏi tuyệt vời ngay cả đối với những người không sử dụng Flask. Ngoài ra, việc định nghĩa các hàm theo cách này chỉ mất thêm một dòng cho mỗi hàm so với 'add_url_rule', vì vậy tôi không nghĩ rằng" một phương thức '__init __()' lớn đặc biệt quan trọng. – IanPudney