Str 对象不可调用,类
Str object not callable, with Classes
我正在学习 classes,当我调用 class "Animal" 时出现错误:"Str object not callable"
这是我的代码:
class Animal(object):
def __init__(self, name):
self.name = name
def name(self):
print '%s' %(self.name)
rock=Animal("rock")
rock.name()
当您设置 self.name = name
时,您会隐藏该方法。现在 rock.name
指的是字符串 "rock"
,而不是方法:Animal.name
.
一个可能的修复:
class Animal(object):
def __init__(self, name):
self._name = name
def name(self):
print '%s' %(self._name)
rock=Animal("rock")
rock.name()
但是,当然,如果您进行此更改,您会得到令人惊讶的结果:
print rock.name
Object.name 引用名称。因此,您可以键入:rock.name 来查看名称,或者您可以创建一个方法来提取名称:rock._get_name()
class Animal(object):
def __init__(self, name):
self.name = name
def _get_name(self):
print '%s' %(self.name)
rock=Animal("rock")
rock._get_name()
class Animal(object):
def __init__(self, name):
self.name = name
def my_name(self):
print '%s' %(self.name)
rock=Animal("rock")
print rock.name
rock.my_name()
给予
>>>rock
>>>rock
意思是:
当您尝试调用 .name()
时,它正在调用 Animal class
属性 (name
),它给出 str
。所以 str
不是 callable.So它不应该被称为rock()
。那就是你的 error.But class 方法,这里 my_name
是可调用的,它打印它的 attribute
name
我正在学习 classes,当我调用 class "Animal" 时出现错误:"Str object not callable"
这是我的代码:
class Animal(object):
def __init__(self, name):
self.name = name
def name(self):
print '%s' %(self.name)
rock=Animal("rock")
rock.name()
当您设置 self.name = name
时,您会隐藏该方法。现在 rock.name
指的是字符串 "rock"
,而不是方法:Animal.name
.
一个可能的修复:
class Animal(object):
def __init__(self, name):
self._name = name
def name(self):
print '%s' %(self._name)
rock=Animal("rock")
rock.name()
但是,当然,如果您进行此更改,您会得到令人惊讶的结果:
print rock.name
Object.name 引用名称。因此,您可以键入:rock.name 来查看名称,或者您可以创建一个方法来提取名称:rock._get_name()
class Animal(object):
def __init__(self, name):
self.name = name
def _get_name(self):
print '%s' %(self.name)
rock=Animal("rock")
rock._get_name()
class Animal(object):
def __init__(self, name):
self.name = name
def my_name(self):
print '%s' %(self.name)
rock=Animal("rock")
print rock.name
rock.my_name()
给予
>>>rock
>>>rock
意思是:
当您尝试调用 .name()
时,它正在调用 Animal class
属性 (name
),它给出 str
。所以 str
不是 callable.So它不应该被称为rock()
。那就是你的 error.But class 方法,这里 my_name
是可调用的,它打印它的 attribute
name