【问题标题】:Using a return value from one function(method) into other in Python在 Python 中使用一个函数(方法)的返回值到另一个函数(方法)中
【发布时间】:2020-07-30 23:44:58
【问题描述】:

我正在尝试使用从函数 - get_reg_check_type 返回的值“str(check)”并在另一个函数 - get_status_type 中使用它。我该怎么做?

#---- 获取注册检查类型 # 如果寄存器存在且已解锁,则返回“CHECK”; "CHECK_NRF" 如果寄存器不存在或被锁定

    def get_reg_check_type(self, addr, lock=definitions.LockTest.LOCK):
        check = "CHECK_NRF" # NOTE: if items (bits) are locked, check will stay set to CHECK_NRF
        for items in self.register_field_collection:
            for item in items:
                # Bit exists and is unlocked - return "CHECK"
                if (addr == item.register_address):
                    if ((lock == definitions.LockTest.LOCK) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW])) or \
                       ((lock == definitions.LockTest.A  ) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU])) or \
                       ((lock == definitions.LockTest.AB ) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU])) or \
                       ((lock == definitions.LockTest.ABC) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU, definitions.RegWriteLock.FEBU])):
                        check = "CHECK"
        return str(check)
        
    def get_status_type(self):
        if self.check = "CHECK_NRF"
            status_value = 8'h44
        else:
            status_value = 8'h40
        return status_value

【问题讨论】:

  • 这些函数在同一个类中?
  • 在您的 get_status_type 函数中,只需调用 get_reg_check_type 函数。 check = self.get_reg_check_type(addr)
  • @nagyl 是的,他们在同一个班级

标签: python function class methods return-value


【解决方案1】:

如果在同一个类中可以找到这些函数,您可以先调用get_reg_check_type,然后再调用get_status_type

def get_reg_check_type(self, addr, lock=definitions.LockTest.LOCK):
        check = "CHECK_NRF" # NOTE: if items (bits) are locked, check will stay set to CHECK_NRF
        for items in self.register_field_collection:
            for item in items:
                # Bit exists and is unlocked - return "CHECK"
                if (addr == item.register_address):
                    if ((lock == definitions.LockTest.LOCK) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW])) or \
                       ((lock == definitions.LockTest.A  ) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU])) or \
                       ((lock == definitions.LockTest.AB ) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU])) or \
                       ((lock == definitions.LockTest.ABC) and (item.register_write_lock in [definitions.RegWriteLock.NO, definitions.RegWriteLock.FRW, definitions.RegWriteLock.FRU, definitions.RegWriteLock.FEBU])):
                        check = "CHECK"
        self.checked = str(check) # set the value
        
    def get_status_type(self):
        print(self.checked) # get the value
        if self.check = "CHECK_NRF"
            status_value = 8'h44
        else:
            status_value = 8'h40
        return status_value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2021-07-07
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多