簡體   English   中英

我應該如何實現以下需求描述

[英]How should I implement the following requirements description

這是我的代碼: 在 init 中,我收到了不可數的變量。 在一些子查詢查詢中,我使用了變量,但是在最終執行的函數中,我不知道我需要輸入哪些變量值。

 class QueryModule:
    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            setattr(self, k, v)

        self.auou = AbpUserOrganizationUnits
        self.au = AbpUsers

    def get(self, k):
        if hasattr(self, k):
            return getattr(self, k)

    def own_departmentId(self):
        return session.query(self.auou.OrganizationUnitId).join(
            self.au, self.auou.UserId == self.au.Id).filter(
            self.au.HisKey == self.get('u_code')).subquery()

    def depart_query(self):
        return session.query(self.auou.OrganizationUnitId).join(
            self.au, self.auou.UserId == self.au.Id).filter(
            self.au.HisKey == self.get('u_code')).subquery()

    def current_department(self):
        department_id_list = session.query(self.depart_query()).all()
        return department_id_list


print(QueryModule(u_code='xmin').current_department())

上面代碼中,[own_departmentid]和[part_query]需要引用變量[u_code],但是我最后調用了[current_department]函數。

在調用[current_department]函數的時候,我其實不知道需要傳入哪些變量值。

那么,有沒有什么辦法可以重寫我的代碼,讓我知道只調用函數[current_department]時應該傳遞哪些參數?

做 setattr(self, k, v) 是hackish,在這里根本沒有幫助你。 怎么樣:

def __init__(self, **kwargs):
    self.query_args = kwargs
    self.auou = AbpUserOrganizationUnits
    self.au = AbpUsers

現在您已經存儲了查詢參數,您可以在以后隨時使用它們。 例如:

def depart_query(self):
    q = session.query(self.auou.OrganizationUnitId).join(
        self.au, self.auou.UserId == self.au.Id)
    for (k, v) in self.query_args.items():
        q = q.filter(getattr(self.au, k) == v)
    return q.subquery()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM