cuốn sách gpt4 ai đã làm

Python 共享属性父/子

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:17:35 31 4
mua khóa gpt4 Nike

Xin lỗi vì đã hỏi nhưng tôi đang sử dụng webapp2 và tôi đang thiết kế một giải pháp để giúp xác định tuyến đường dễ dàng hơn dựa trên chức năng định tuyến google webapp2 này .nhưng tất cả phụ thuộc vào khả năng xác định ở cấp độ trẻ em TYPE_NAME. Ý tưởng là cha mẹ thiết lập mọi thứ và đứa trẻ chỉ cần thực hiện _danh sách Chức năng. Vấn đề tôi đang gặp phải là TYPE_NAME là Không có Tôi cần nó khi còn nhỏ.

#main WSGI được mở rộng để có chức năng này 
lớp WSGIApplication(webapp2.WSGIApplication):
tuyến đường def (self, *args, **kwargs):
trình bao bọc def(func):
self.router.add(webapp2.Route(handler=func, *args, **kwargs))
return func

giấy gói trả lại

từ ứng dụng nhập khẩu chính
lớp ParentHandler(RequestHandler):
TYPE_NAME = Không có

@application.route('/', name="list_%s" %TYPE_NAME)
danh sách def (tự):
tự trả về._list()

lớp ChildHandler(ParentHandler):
TYPE_NAME = 'con'

def _list(tự):
trở lại []

Tôi đã thử một số giải pháp sử dụng "thuộc tính lớp" nhưng không thành công. Mở ra những ý tưởng khác, về cơ bản tôi chỉ cần lớp con kế thừa các thuộc tính trang trí và triển khai chúng.

biên tập:

Dành cho tất cả các bạn đang ngồi trên ghế thắc mắc làm cách nào để giải quyết vấn đề này, tôi không thể lấy được mọi thứ tôi cần từ người trang trí nên cuối cùng tôi đã sử dụng meta. Tôi cũng đã thêm một _URLS Các tham số để cho phép thêm các "tuyến đường" bổ sung. nó sẽ custom Chức năng ánh xạ tới các tuyến đường. Thực sự muốn sử dụng công cụ trang trí nhưng không thể làm cho nó hoạt động được.

lớp Yêu cầuURLMeta(loại):
def __new__(mcs, tên, căn cứ, dct):
result = super(RequestURLMeta, mcs).__new__(mcs, name, base, dct)
urls = getattr(kết quả, '_URLS', {}) hoặc {}
cho k,v trong urls.iteritems():
mẫu = v.pop('mẫu')
app.route(getattr(kết quả, k), mẫu, **v)

nếu getattr(kết quả, 'TYPE_NAME', Không có):
app.route(result.list, result.ROOT_PATH, Method=['GET'],name="%s" % result.TYPE_NAME)
#những người khác đã đến đây..

kết quả trả về

lớp ParentHandler(RequestHandler):
__metaclass__ = Yêu cầuURLMeta


lớp ChildHandler(ParentHandler):
TYPE_NAME = 'con'
_URLS = { 'tùy chỉnh': '/custom', 'TYPE_NAME': 'custom_test' }
def _list(tự):
trở lại []
def tùy chỉnh (tự): vượt qua

câu trả lời hay nhất

Tôi nghĩ để làm cho nó hoạt động bạn cần sử dụng siêu lớp .Nó có thể trông giống như sau (chưa được kiểm tra):

từ ứng dụng nhập khẩu chính

lớp RouteMeta(loại):
def __new__(mcs, tên, căn cứ, dct):
type_name = dct.get("TYPE_NAME")
nếu type_name không phải là Không có:
@application.route('/', type_name)
danh sách def (tự):
tự trả về._list()
dct["danh sách"] = danh sách
return super(RouteMeta, mcs).__new__(mcs, name, base, dct)

lớp ParentHandler(RequestHandler):
__metaclass__ = RouteMeta

lớp ChildHandler(ParentHandler):
TYPE_NAME = 'con'

def _list(tự):
trở lại []

danh sách() Phương pháp này không Trình xử lý cha mẹ thuộc tính nhưng được kế thừa từ Trình xử lý cha mẹ Lớp được tạo động và có TYPE_NAME Đã xác định.

nếu như Trình xử lý yêu cầu Đồng thời sử dụng siêu dữ liệu tùy chỉnh, hãy RouteMeta 继承自 Yêu cầuHandler.__metaclass__ thay vì kiểu.

Về các thuộc tính chung của Python cha/con, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/14527531/

31 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress