Python 模擬試験

Python実践 模擬試験 第3回 問2・2章 コーディング規約(PEP 8)

先頭に 2 つのアンダースコアが付く名前

次のコードを実行したときの出力として、正しいものを1つ選べ。

class C:
    def __init__(self):
        self.__v = 1
print(hasattr(C(), "_C__v"), hasattr(C(), "__v"))
  1. A

    True False

  2. B

    False True

  3. C

    True True

  4. D

    False False

正解と解説を見る

正解:A

先頭に 2 つのアンダースコアが付く属性は、サブクラスでの名前の衝突を避けるため、_クラス名__名前 に名前修飾される。アクセスの禁止ではない。

順実行する行実行後の変数
1`class C:`—
2└ `def __init__(self):`—
3`print(hasattr(C(), "_C__v"), hasattr(C(), "__…`—
4└ `self.__v = 1`(2回)self = C(vars={'_C__v': 1})
結果実際の出力True False

学習のポイント:先頭に 1 つのアンダースコアは、内部用の目印。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。