学习使用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(使用解析库如BeautifulSoup
或lxml
)是必要的。这部分可以独立于Django学习。文章来源:https://www.toymoban.com/news/detail-820737.html
网上有大量的教程和指南,这些资源可以帮助你学习Django和爬虫技术。理论学习之后,动手实践是非常重要的。通过实际编写和运行代码来加深理解。以上就是全部得内容,如果有更多学术探讨,欢迎评论区留言讨论。文章来源地址https://www.toymoban.com/news/detail-820737.html
到了这里,关于Django代码中的TypeError ‘float‘ object is not callable的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!