Discuss / Python / 私有变量在外部直接赋值怎么不报错?为什么打印出None

私有变量在外部直接赋值怎么不报错?为什么打印出None

Topic source
class Student(object):
    def __init__(self,name,score):
        self.name=name
        # self.score=score
        self.__score=score
    def out(self):
        print(self.name,self.__score)


class StudentLittle(Student):
    pass

s1 = Student('sky',66)
**s1.__score=1** #这个怎么执行不报错
# print( s1.__score)

s2 = Student('sky',66)
s2.ss='sss'
print(s1.out())

执行结果:

C:\Users\suneee\AppData\Local\Programs\Python\Python36\python.exe E:/wangjz/PyWorkSpace/LearnPython/PY0702/test06.py
sky 66
**None**  *#执行结果怎么多了这个None*

Process finished with exit code 0

你这个问题应该是出在最后一行代码 print(s1.out()) 这行代码做了两次输出操作一次是s1.out(),因为out()这个方法里有print语句;还有一次就是本身的print(s1.out())的这个输出。因为out()这个方法没有返回值,所以out()这个方法的结果就是空的,所以print(s1.out())这句话本身的输出就是空的


  • 1

Reply