実現したいこと
お世話になっております。
Pythonのクラスでなんとかprivateなインスタンス変数が作れないかと思っています。__は、クラス名をつけると変更できてしまうので ... orz、
最初は、__setattr__でインスタンス変数への設定がcatchできると聞いて、ここでインスタンス変数の変更をチェックすれば、privateなインスタンス変数が作れるかと思っていたら、__setattr__は、クラス外からの設定もクラス内からの設定もcatchしてしまうようですT^T)/。
例えば、以下で、(__setattr__に限らず)(1)(2)と(3)を区別したいのですができないものでしょうか?
class SampleSetattr(): def __init__(self): self.x = 1 # (1) def __setattr__(self, name, value): print('__setattr__メソッドが呼び出されました', name, value) def set(self, a): self.x = a # (2) data = SampleSetattr() data.x = 2 # (3) data.set(3)
Pythonでは、どうやっても無理なのですかね ...
よろしくお願いします
「なんとかprivateなインスタンス変数が作れないか」
基本そういう機能の無いpython言語をつかってprivateの変数を作りたい理由って何でしょう?

回答2件
あなたの回答
tips
プレビュー