编译器说TypeError:'str'对象在尝试执行程序时不可调用。这是什么意思,我该如何解决这个问题?此外,我正在尝试使用sep,但它也会返回错误。代码将随之而来。感谢您提出的所有建议
class dog:
def __init__(self, name, breed, owner):
self.name = name
self.breed = breed
self.owner = owner
def bark(self):
print(self.name, "barks.")
def breed(self):
print(self.name, "is a", self.breed)
def owner(self):
print(self.name, "'s owner is ", self.owner, sep='')
d1 = dog("Tommy", "Terrier", "Mary")
d1.bark()
d1.breed()
d1.owner()
d2 = dog("Johnny", "Bloodhound", "Alex")
d2.bark()
d2.breed()
d2.owner()
编辑:谢谢Simon的解决方案。 更新的代码:
class dog:
def __init__(self, name, breed, owner):
self.name = name
self.breed = breed
self.owner = owner
def speak(self):
print(self.name, "barks.")
def identify(self):
print(self.name, "is a", self.breed)
def relation(self):
print(self.name, "belongs to", self.owner)
d1 = dog("Tommy", "Terrier", "Mary")
d1.speak()
d1.identify()
d1.relation()
d2 = dog("Johnny", "Bloodhound", "Alex")
d2.speak()
d2.identify()
d2.relation()
这是按预期工作,但它打印很奇怪。这是我得到的输出:
('Tommy', 'barks.')
('Tommy', 'is a', 'Terrier')
('Tommy', 'belongs to', 'Mary')
('Johnny', 'barks.')
('Johnny', 'is a', 'Bloodhound')
('Johnny', 'belongs to', 'Alex')
我知道如何剥离括号等吗?
答案 0 :(得分:0)
发生此错误是因为您调用的变量与函数相同。要解决此问题,您只需更改函数或变量的名称即可。例如:
class dog:
def __init__(self, name, breed, owner):
self.name = name
self.breed = breed
self.owner = owner
def bark(self):
print(self.name, "barks.")
def breeds(self):
print(self.name, "is a", self.breed)
def owners(self):
print(self.name, "'s owner is ", self.owner, sep='')
d1 = dog("Tommy", "Terrier", "Mary")
d1.bark()
d1.breeds()
d1.owners()
d2 = dog("Johnny", "Bloodhound", "Alex")
d2.bark()
d2.breeds()
d2.owners()
在您的代码中,Python认为您调用变量(self.breed
或self.owner
)而不是函数(self.breed
,self.owners
),因为两者都以相同的方式定义。它无法区分两者,只是取得它找到的第一个(即变量)。这会返回错误。
您可以用以下简单的术语重现可调用错误:
breed = "BloodHound"
breed()
这正是你上面所做的。