2009-09-21 4 views
0

주어진 클래스 유형 어떻게 파이썬에서 인스턴스를 만들 수 있습니까?

class whatever(object): 
    def __init__(self): 
     pass 

이 함수는 다음과 같습니다.

def create_object(type_name): 
    # create an object of type_name 

를 다음과 같이 호출 할 수 있습니다.

inst = create_object(whatever) 

whatever의 인스턴스. 나는 이것이 eval를 사용하지 않고 할 수 있어야한다고 생각한다, 나는 이것을 어떻게하는지 알고 싶다.

에 대한 매개 변수로 문자열을 사용하는 NOT입니다.

+0

어떤 파이썬 자습서를 읽고 계십니까, @ 지오? 귀하의 질문은 튜토리얼에 중요한 정보가 누락되어 있음을 나타냅니다. 어느 쪽을 읽었습니까? –

답변

7

가장 확실한 방법 :

def create_object(type_name): 
    return type_name() 
+0

'type_name'을 호출 할 수 있다는 생각이 들지 않았습니다. – Geo

+0

클래스는 파이썬에서 일반 일급 객체 일 뿐이며 다른 변수와 동일한 네임 스페이스를 공유합니다. – bobince

2

만약 내가 제대로 이해하고, 당신이 원하는 것은 :

def create_object(type_name, *args): 
    # create an object of type_name 
    return type_name(*args) 

inst = create_object(whatever) 

정말 이 작업을 수행 할 알고 있지만 것없는 그런 구조를 필요로하는 이유는 무엇인지 당신에게서 듣기에 재미있을 것입니다.

+0

그냥 평가판없이 끝낼 수 있는지 알고 싶다. – Geo

+1

'eval'과 그 더럽고 형제 인'exec'는 거의 필요 없다. 'eval'은 애플리케이션 전역 변수와 지역 변수를 사용하지 않는 조치를 취하는 한 사용자 입력을 평가하는 데 유용합니다. – voyager

2
def create_object(type_name): 
    return type_name() 

당신은 물론 완전히 기능을 생략하고이 같은 whatever의 인스턴스를 만들 수 있습니다

inst = whatever() 
5
def create_object(typeobject): 
    return typeobject() 

가 그렇게 명시 적으로 create_object에 인수가 될하는 것은 아닙니다 말대로를 문자열, 난 create_object(whatever) 예를 들어, 그냥 whatever 그 자체가 형식에서 제공하는 것처럼 그것은 자체 개체 형식이 될 것으로 가정합니다.

관련 문제