[英]TypeError: 'str' object is not callable oop
我是 oop 和 python 的新手。 为什么我会收到此错误? 它不应该打印汤姆和 12 吗?
class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
def name(self):
return self.name
def age(self):
return self.age
dog = Dog("tom", 12)
print(dog.name())
print(dog.age())
实例属性优先于 class 属性,当每个属性都存在并且它们具有相同名称时。 如果您要拥有一个返回属性值的方法,通常的约定是通过在名称前加上下划线,使实例属性的名称成为方法名称的“私有”版本。
class Dog:
def __init__(self, name, age):
self._name = name
self._age = age
def name(self):
return self._name
def age(self):
return self._age
但是,除非您有充分的理由将属性隐藏在 getter 后面,否则只需将该属性作为公共接口的一部分公开即可。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
d = Dog("tom", 12)
print(dog.name)
如果您稍后决定将属性隐藏在 getter 和/或 setter 后面,则可以使用属性来执行此操作,而无需更改公共接口。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
@property
def name(self):
return self._name
@name.setter
def name(self, v):
self._name = v
d = Dog("tom", 12)
print(dog.name) # Works the same as before
name
是一个变量, name
也是一个 function。
因此这个错误。
只需print(self.name)
你必须创建 class 并像这样更改函数的名称
class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
def Name(self):
return self.name
def age(self):
return self.age
dog = Dog("tom", 12)
print(dog.name())
print(dog.age())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.