Skip to main content

Python メモ – プライベート メソッド

Pythonのプライベートメソッドの書き方について調べたのでメモ。Pythonでは、名前が__で始まり__で終わらないメソッドがプライベートとして扱われる。次の例だと、__fullname()がプライベートになり、外から呼び出すとエラーになる。

>>> class Person:
...     def __init__(self, firstname, lastname):
...         self.firstname = firstname
...         self.lastname = lastname
...
...     def print_fullname(self):
...         print(self.__fullname())
...
...     def __fullname(self):
...         return self.firstname + ' ' + self.lastname
...
...

>>> p = Person('Donald', 'Trump')
>>>
>>> p.print_fullname()
Donald Trump

>>> p.__fullname()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Person' object has no attribute '__fullname'

しかし、プライベートメソッドの前に_クラスをつけると呼び出せる。

>>> p._Person__fullname()
'Donald Trump'

よって、厳密には外から呼び出せないわけではないので気をつける必要がある。