调用turboCar.__reset_odometer()
将引发异常,因为即使在Car
对象上调用该方法,它仍然在类定义之外。可以这样想:您不在类中,在实例化时编写方法定义turboCar = Car()
。
所以你仍然可以__reset_odometer
像这样在类内部引用,
class Car(object):
def __init__(self):
self.__odometer = 88800
self.__reset_odometer() # <-- call double underscore function
def __reset_odometer(self):
self.__odometer = 0
def read_odometer(self):
return self.__odometer
使用turboCar
工作正常,里程表已重置,
>>> turboCar = Car()
>>> turboCar.read_odometer()
0
当然,在 Python 中没有像 inC++
之类的真正私有变量,
>>> turboCar._Car__odometer = 9999
>>> turboCar.read_odometer()
9999
>>> turboCar._Car__reset_odometer()
>>> turboCar.read_odometer()
0