You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义Temperature类实例化报无参数错误问题求助

代码问题分析
  • 构造方法缺失导致实例化报错:你自定义的Temperature类没有声明__init__初始化方法,Python默认提供的无参构造方法不支持接收额外入参,所以n_temp=Temperature(c)、n_temp=Temperature(f)这两行给类传参的代码会触发Temperature() takes no arguments的报错。
  • 实例对象被重复覆盖:你先后两次给n_temp变量赋值,第二次的赋值会直接清空第一次的实例内容,即便解决了构造方法的问题,也无法同时处理两个输入的温度值。
  • 方法调用逻辑错误:convertF、convertC是类的实例方法,调用时需要加括号,同时要传入对应参数,你写的print(n_temp.convertF)只会打印方法对象的内存地址,不会执行转换逻辑返回结果。
修复方案

方案1:不修改原有类结构,调整实例化和调用逻辑

这种方案改动最小,适合不需要持久化存储温度属性的场景:

class Temperature():
    def convertF(self,c):
        return c*1.8+32

    def convertC(self,f):
        return (f-32)*(5/9)

c = float(input())                
f = float(input())
# 实例化时不传参
n_temp = Temperature()
# 调用方法时传入对应温度值
print(n_temp.convertF(c))
print(n_temp.convertC(f))

方案2:新增构造方法存储温度属性

如果需要把温度值作为实例属性存储,可以调整类结构如下:

class Temperature():
    # 新增初始化方法,接收温度值
    def __init__(self, temp):
        self.temp = temp
    
    def convertF(self):
        return self.temp*1.8+32

    def convertC(self):
        return (self.temp-32)*(5/9)

c = float(input())                
f = float(input())
# 分别实例化两个对象存储不同温度值
c_temp = Temperature(c)
f_temp = Temperature(f)
print(c_temp.convertF())
print(f_temp.convertC())

内容的提问来源于stack exchange,提问作者Vaiebhav Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:33:03