2

Private クラスのメソッドは、そのクラスの外部から呼び出すことはできないと読みました。

Carプライベート メソッドを持つクラスがある場合__reset_odometer()

言ってもいい:

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

__reset_odometer()Car クラス内で定義されます。 クラスturboCarのインスタンスです。Carでは、なぜメソッドを呼び出すと turboCar.__reset_odometer()アクセス エラーが発生するのでしょうか。

「クラス外」というのは、私が理解していない用語だと思います。私にとって b/caturboCarはクラス外ではありませんCar

4

3 に答える 3

2
class Car(object):
    def __reset_odometer(self):
        pass
    def reset(self):
        self.__reset_odometer() # This is valid.

turbocar = Car()
turbocar.reset()
turbocar.__reset_odometer() # This is invalid. __reset_odometer is only accessible from Car methods.
于 2013-06-19T05:32:47.977 に答える
1

メソッドをプライベートとしてマークするために __ を使用しないでください。メソッドをオーバーライドから保護するためにのみ使用してください。メソッドを私用としてマークするには _

あなたの例では、メソッド名は実際にはturboCar._ Car _reset_odometerです。これは、Python が __ で始まるメソッドを隠している方法です。

_ と __ の違いについて詳しくは、こちらをご覧ください

于 2013-06-19T05:35:19.673 に答える