我读到不能从类外部调用私有类方法。
如果我有一个带有私有方法的类Car
我能说:

import Car
Car turboCar = Car();
turboCar.__reset_odometer();

__reset_odometer()在Car类中定义。
__reset_odometer()turboCar类的一个实例。为什么要调用方法
Car导致访问错误?
我想“课外”是一个我不懂的词,对我来说,b/c aturboCar.__reset_odometer()不在课外

最佳答案

调用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

09-10 20:00