저는 파이썬으로 공장에서 일하고 있으며 모든 가져 오기를 "비공개"로하고 싶습니다.파이썬에서 "개인"가져 오기를 만들 수 있습니까?
그래서 이런 식으로 뭔가 :
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()
이 경우 내가 좋아하는 것은 호출자가 MyClass1 및 MyClass2의 참조 MyFactory를 사용하지 할 수 있습니다합니다.
저는 파이썬에서 개인적인 것이 없다는 것을 알고 있습니다. 내가 시도하는 것은 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()
이것은 나에게 매우 파이썬 보이지 않는,하지만 내가 잘못 될 수 있습니다.
누군가 더 좋은 방법이 있는지 알려 줄 수 있습니까? 조금 더 매직 원하고 그것이 클래스처럼 더 취급 할 경우 그냥, 또는 실제 공장을 기능
def my_factory(class_name):
if class_name == "my_class_1":
return MyClass1()
elif class_name == "my_class_2":
return MyClass2()
를 만들 수
솔루션에 원하지 않는 부작용이있는 경우 더 좋은 질문이 될 수 있습니다. 이것이 사실이 아니라면 왜 그것을 사용하지 않습니까? – Matthias
클래스를 비공개로 만드는 전체적인 개념은 Pythonic이 아닙니다. 솔직히 말해서. 하나의 밑줄로 시작하는 클래스 이름을 지정하십시오 :'_'. –
'my_classes from MyClass1 as _MyClass1'을 사용하라는 메시지가 표시됩니다. –