我读到不能从类外部调用私有类方法。
如果我有一个带有私有方法的类Car
我能说:
import Car
Car turboCar = Car();
turboCar.__reset_odometer();
__reset_odometer()
在Car类中定义。__reset_odometer()
是turboCar
类的一个实例。为什么要调用方法Car
导致访问错误?我想“课外”是一个我不懂的词,对我来说,b/c a
turboCar.__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中没有真正的私有变量,比如in
C++
等等,>>> turboCar._Car__odometer = 9999
>>> turboCar.read_odometer()
9999
>>> turboCar._Car__reset_odometer()
>>> turboCar.read_odometer()
0