Python私有变量的访问问题。

下面这个题中name和weight都是私有变量,
为什么需要写一个getWeight方法而不用写getName呢?
因为我发现不写getWeight时调用p.show()会报错。

class Person:
    def __init__(self,name,weight):
        self.__weight=weight
        self.__name=name
    def run (self):
         self.__weight-=0.5
    def eat (self):
         self.__weight+=1
    def getWeight(self):
        return self.__weight
    def show(self):
        print(self.__name,self.__weight)

不写也可以调用啊,代码如下

class Person:
    def __init__(self,name,weight):
        self.__weight=weight
        self.__name=name
    def run (self):
         self.__weight-=0.5
    def eat (self):
         self.__weight+=1
    def show(self):
        print(self.__name,self.__weight)

p = Person("aa", 123)
p.show()

写一个getWeight方法而不写getName
这纯属代码编写者自己的决定。
你说代码有错,把你的错误的代码贴出来看,应该是别的地方的问题