Python类方法调用报错:TypeError: 'int' object is not callable
问题原因
你遇到的错误是因为实例属性Wiek和类方法Wiek重名。在__init__方法中,你给self.Wiek赋值为传入的整数WiekPsa=3,这会覆盖类中定义的同名Wiek()方法。当调用fafik.Wiek()时,Python会将Wiek识别为整数属性,而整数不是可调用对象,因此抛出TypeError。
解决方法
只需修改属性名或方法名避免重名即可,以下是两种可行方案:
方案1:修改属性名
将__init__中的self.Wiek改为符合Python命名规范的名称(小写加下划线),比如self.wiek_psa:
class Pies(Ssaki): def __init__(self, LiczbaKonczynPsa, ImiePsa, WiekPsa): self.LiczbaKonczyn = LiczbaKonczynPsa self.wiek_psa = WiekPsa # 修改属性名 self.Imie = ImiePsa def Przedstaw(self): print('Ten pies wabi się: ', self.Imie) def Konczyny(self): print('Ten pies posiada ', self.LiczbaKonczyn, 'kończyny') def Wiek(self): print('Wiek psa wynosi 6') fafik = Pies(4, 'BOBO', WiekPsa=3) fafik.Przedstaw() fafik.Konczyny() fafik.Wiek() # 可正常调用方法
方案2:修改方法名
将Wiek()方法改为其他名称,比如wyswietl_wiek:
class Pies(Ssaki): def __init__(self, LiczbaKonczynPsa, ImiePsa, WiekPsa): self.LiczbaKonczyn = LiczbaKonczynPsa self.Wiek = WiekPsa self.Imie = ImiePsa def Przedstaw(self): print('Ten pies wabi się: ', self.Imie) def Konczyny(self): print('Ten pies posiada ', self.LiczbaKonczyn, 'kończyny') def wyswietl_wiek(self): # 修改方法名 print('Wiek psa wynosi 6') fafik = Pies(4, 'BOBO', WiekPsa=3) fafik.Przedstaw() fafik.Konczyny() fafik.wyswietl_wiek() # 调用修改后的方法
建议遵循Python命名规范:实例属性和方法名使用小写字母加下划线,类名使用大驼峰格式,能有效减少这类命名冲突问题。
内容的提问来源于stack exchange,提问作者Grzegorz Michalski
相关产品推荐
相关产品推荐

