私はPythonで工場で作業しており、すべてのインポートを「プライベート」にしたいと考えています。Pythonで「プライベート」インポートを作成することは可能ですか
したがって、このような何か:この場合
from my_classes import MyClass1, MyClass2
class MyFactory(object):
def __init__(self, class_name):
if class_name == "my_class_1":
return MyClass1()
elif class_name == "my_class_2":
return MyClass2()
私は、呼び出し元がMyFactoryを使用することができる持ちたい、とMyClass1とMyClass2は表示されません。
私はPythonでプライベートなものはないと知っています。私が試した何 がfrom my_classes import MyClass1 as _my_class_1
であるが、その後、私は今のメッセージConstant variable imported as non-constant
を取得し、私はこのようにそれを解決した:
class MyFactory(object):
def __init__(self):
do my init stuff here
def create_myclass_1(self):
from my_classes import MyClass1
return MyClass1()
def create_myclass_2(self):
from my_classes import MyClass2
return MyClass2()
これは私にとって非常にPython的に見えるしませんが、私は間違っている可能性があります。
誰かがこれを行うより良い方法があるかどうか教えてもらえますか?
あなたのソリューションに望ましくない副作用がある場合、より良い質問があります。これが事実でない場合、なぜそれを使用しないのですか? – Matthias
クラスをプライベートにするという考えは、正直言ってPythonicではありません。単一のアンダースコアで始まるクラス名を与えるだけです: '_'。 –
「from my_classes import MyClass1 as _MyClass1'」とメッセージに記載されています。 –