Django代码中的TypeError ‘float‘ object is not callable

news/2024/7/19 11:03:23 标签: django, 数据库, sqlite, 开发语言, 后端, 爬虫

学习使用Django进行网页爬取取决于你对Python、Django框架和网络爬虫的熟悉程度。以下是一些关键点,总的来说,如果你已经具备Python和Django的基础知识,并对网页爬虫有一定了解,那么学习使用Django进行网页爬取将会比较容易。如果你是一个完全的初学者,那么可能需要更多的时间和努力来掌握所需的所有技能。不过,通过逐步学习和实践,这是完全可行的。比如我遇到得下面得问题以及我得应对方法。

在这里插入图片描述

问题背景

在Django代码中,遇到一个TypeError: ‘float’ object is not callable的错误。

这个错误发生在几个property装饰器的方法中,例如:

@property
def pmt_loaner_final(self):
    return float(self.pmt_loaner_new) + float(self.debit_fee)

@property
def pmt_broker_final(self):
    return float(self.pmt_broker_new) + float(self.debit_fee)

@property
def total_compounded_broker(self):
    return self.compounded_amount(self.brokerage_fees)

@property
def total_compounded_loaner(self):
    return self.compounded_amount(self.amount)

这些property装饰器的方法试图将浮点数转换为整数,但由于浮点数不是可调用的对象,因此抛出TypeError: ‘float’ object is not callable的错误。

另外,在以下代码段中,也遇到了同样的错误:

@property
def discount(self):
    return self.final_credit_rate(
        self.pmt_loaner_final + self.pmt_broker_final,
        self.total_compounded_loaner + self.total_compounded_broker
    )

在该代码段中,试图将a+b和c+d的和作为实参传递给final_credit_rate方法,但是由于a+b和c+d都是浮点数,因此抛出TypeError: ‘float’ object is not callable的错误。

除此之外,还尝试使用final_pmt_without_withdrawal_fees和total_compounded作为实参传递给get_final_credit_rate方法,也遇到了同样的错误。

解决方案

对于这个问题,有两种可能的解决方案:

1、移除@property装饰器

如果不需要将这些方法作为property属性来使用,可以移除@property装饰器,并将这些方法定义为普通的函数。这样就可以直接调用这些方法,而不会抛出TypeError: ‘float’ object is not callable的错误。

2、使用括号调用property属性

如果需要将这些方法作为property属性来使用,可以使用括号来调用这些属性。例如:

discount = computation.final_credit_rate(
    computation.pmt_loaner_final() + computation.pmt_broker_final(),
    computation.total_compounded_loaner() + computation.total_compounded_broker()
)

通过使用括号来调用property属性,就可以避免TypeError: ‘float’ object is not callable的错误。

对于第二个问题,需要将a+b和c+d的和转换为整数,然后再作为实参传递给final_credit_rate方法。例如:

discount = computation.final_credit_rate(
    int(computation.pmt_loaner_final()) + int(computation.pmt_broker_final()),
    int(computation.total_compounded_loaner()) + int(computation.total_compounded_broker())
)

通过将a+b和c+d的和转换为整数,就可以避免TypeError: ‘float’ object is not callable的错误。

对于第三个问题,需要将final_pmt_without_withdrawal_fees和total_compounded转换为整数,然后再作为实参传递给get_final_credit_rate方法。例如:

final_credit_rate = computation.get_final_credit_rate(
    int(computation.final_pmt_without_withdrawal_fees()),
    int(computation.total_compounded())
)

通过将final_pmt_without_withdrawal_fees和total_compounded转换为整数,就可以避免TypeError: ‘float’ object is not callable的错误。

了解如何爬取网页(使用请求库如requests)、解析HTML(使用解析库如BeautifulSouplxml)是必要的。这部分可以独立于Django学习。

网上有大量的教程和指南,这些资源可以帮助你学习Django和爬虫技术。理论学习之后,动手实践是非常重要的。通过实际编写和运行代码来加深理解。以上就是全部得内容,如果有更多学术探讨,欢迎评论区留言讨论。


http://www.niftyadmin.cn/n/5344013.html

相关文章

kafka为什么不支持读写分离?

kafka为什么不支持读写分离? 在kafka中,生产者写入消息,消费者读取消息的操作都是与 leader 副本进行交互的,从而实现的是一种主写主读的生产消费模型。kafka不支持读写分离,也就是主写从读。 读写分离有以下不足&am…

python连接mysql查询数据输出excel

要将Python连接MySQL查询的数据输出到Excel文件,你可以使用pandas库和openpyxl库。首先,你需要安装这些库,可以使用以下命令: pip install pandas openpyxl 接下来,你可以使用以下代码将MySQL查询的数据导出到Excel文…

打家劫舍打家劫舍II

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的…

MySql索引事务讲解和(经典面试题)

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 索引 概念 索引的相关操作 索引内部数据结构 事务 为…

2024年深圳市软件产业高质量发展应用推广体系扶持计划人工智能软件应用示范项目申请指

​一、资助的项目类别 企业实施的通过应用人工智能软件对现有生产、服务和管理方式进行智能化升级,且技术水平先进、市场前景广阔、带动效应明显的人工智能软件应用示范项目。 二、设定依据 (一)《深圳市人民政府关于印发推动软件产业高质…

SAP PO平台配置

多个系统分配 : XPATH : /p1:mt_ERP_ZSSF_HFM_001/sapClient SPACE : p1 http://lstech.com/erp/IF0523/ZSSF_HFM_001

上海计算机学会12月月赛 丙组题解

上海计算机学会 12 月月赛 丙组题解涉及知识点:数学、字符串、模拟、裴蜀定理、宽度优先搜索、动态规划 比赛链接:https://iai.sh.cn/contest/58 第一题:T1数砖数 标签:数学题意:给定一种 2 2 2x 2 2 2的瓷砖&#…

通过 GScan 工具自动排查后门

一、简介 GScan 是一款为安全应急响应提供便利的工具,自动化监测系统中常见位置。 工具运行环境:CentOS (6、7) python (2.x、3.x) 工具检查项目: 1、主机信息获取 2、系统初始化 alias 检查 3、文件类安全扫描 3.1、系统重要文件完整行…