Discuss / Python / 很奇怪,set_score()函数可以传入数字改变,但是set_name()却不行,报错'str' object is not callable

很奇怪,set_score()函数可以传入数字改变,但是set_name()却不行,报错'str' object is not callable

Topic source

class Student(object):

def __init__(self, name, score):
    self.__name = name
    self.__score = score

def print_score(self):
    print('%s: %s' % (self.__name, self.__score))
def get_name(self):
    return self.__name
def get_score(self):
    return self.__score
def set_name(self,name):
     self.__name=name
def set_score(self,score):
     self.__score=score

交互环境 bart=Student('hqg',87) bart.set_name('yuli')就会报错,不知道为啥

了此本心

#2 Created at ... [Delete] [Delete and Lock User]

我试了一下,没有报错呀

WXL吴新乐

#3 Created at ... [Delete] [Delete and Lock User]

是的呀,我的也是报错

在此插入代码

xiaoming.set_score(89) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> xiaoming.set_score(89) AttributeError: 'student' object has no attribute 'set_score'

你代码格式有误

#coding:utf-8

class Student(object):
    # 双下划线开头,并且以双下划线结尾的,是特殊变量
    def __init__(self,name,score):
        # 私有变量(private)
        self.__name = name
        self.__score = score

    # 外部代码获取name和score
    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score

    def print_score(self):
        print('%s : %d' %(self.__name,self.__score))

    # 外部代码修改name和score
    def set_name(self,name):
        self.__name = name

    def set_score(self,score):
        self.__score = score

n1 = Student('xiaoling',80)
n1.print_score()
n2 = Student('vforbox',90)
print('-------------')
n2.set_name('change')
n2.set_score(88)
n2.print_score()

结果:

xiaoling : 80
-------------
change : 88

  • 1

Reply