最新回答 / 慕丝8731815
不会。当你执行r1 = Rational(1, 2)时,只是创建了一个Rational类的实例,并将其赋值给变量r1。这行代码并不会直接调用__add__方法。__add__方法只有在你使用+运算符来对r1和另一个Rational对象进行相加时才会被调用。例如,当你执行r1 + r2时,__add__方法会被自动调用来执行加法操作。
2021-05-07
最新回答 / Sapce
个人理解:只要重写了 __str__()方法,不管是打印对象还是打印对象的字符串格式,其调用的都是 __str__()方法,所以显示的都是格式化的结果。也就是说,print(str(obj)) 和 print(obj) 是一样的而只有在控制台(window下的cmd,命令提示符)中,在python环境下直接输入(不是打印)obj,回车,调用的才是 __repr__()方法。如果没有重写该方法,还是会显示对象所在的地址
2021-05-05
最赞回答 / 树懒先生QAQ
@是装饰符以原文为例,先定义了一个log()函数。把想要装饰函数factorial()上一行写上 @log,就完成了用log()函数里的内容去“”装饰“”factorial()函数里的内容。通过@装饰符,可以修饰某函数,使其完成自己想要的额外的功能
2021-04-22