Str对象不可调用,带有类

Pat*_*ook 0 python class subclass python-2.7

我正在学习类,当我调用类"Animal"时,它给出了错误:"Str对象不可调用"

这是我的代码:

class Animal(object):
    def __init__(self, name):
        self.name = name
    def name(self):
        print '%s' %(self.name)
rock=Animal("rock")
rock.name()
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 7

设置时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()
Run Code Online (Sandbox Code Playgroud)

但是,当然,如果你做了这个改变,你会得到一个令人惊讶的结果:

print rock.name
Run Code Online (Sandbox Code Playgroud)