2012-11-19 2 views
2

개체 이름을 가져 와서 개체를 만들 때 저장할 수 있습니까? 즉 내가 인스턴스화 중 개체 이름 가져 오기

fooinstance = foobar() 

유형의는 foobar의 생성 된 객체에 이름이 'fooinstance'를 저장할 수있는 방법이 있나요 ... ..

Class foobar(): 
    pass 

을 새로운 클래스를 만든 다음 말을한다면? 이 동작을 구현하는 데 이름을 사용할 수 있습니까?

내가 물어 본 이유는 생성 된 개체가 작성자가 누구인지를 알아야하는 추가 개체를 생성하기 때문입니다.

+0

"사람"이 없으며 참조 만 있습니다. – Keith

+0

인스턴스화 중에 오브젝트 B를 인스턴스화 한 오브젝트 A의 참조를 오브젝트 B에 전달할 수 있습니까? – Flaminator

+0

왜 그렇게하고 싶습니까? 순환 참조와 메모리 누수를 얻으려는 것 같네요 궁극적 인 목표는 무엇입니까? – Keith

답변

2

이런 식으로하려고하십니까?

class Player(object):  
    # ... snip ... 

    def fire(self): 
     bullet = Bullet() 
     bullet.owner = self 
     bullet_list.append(bullet) 

나는 부모님이나 소유자를 알아야 할 때 비슷한 것을 사용했습니다. 소유자가 존재하지 않을 가능성이있는 경우 weakref를 사용할 수 있습니다.

2

아니요. 아무 래도 무의미합니다.

fooinstance = foobar() 
bar = fooinstance 
print bar.__name__ 

이니셜 라이저에 설정된 키를 사용하여 다른 방법으로 개체를 식별 할 수 있습니다.

+0

의도를 명확히하기 위해 질문을 수정했습니다. fooinstance는 생성자가 누구인지를 알아야하는 객체를 생성합니다. 나는 과제에 한 번 열거하지 않아도되고, 핵심 가치를 정의하는 데있어서 다시 읽을 필요가 없다고 생각하기를 바랍니다. 이 작업을 수행하는 다른 방법이 있습니까? – Flaminator

1

객체를 만들어 "사람"알 필요가 있다면, 그냥 통과한다는 점에서 작성시 "사람"

class Foo(): 
    def __init__(self,whichbar): 
    do something with whichbar 

class Bar(): 
    def something(self): 
    myfoo = Foo(self) 

주 그 객체가 할당하는 이름 변수의 중요하지 않습니다. 객체가 루틴간에 전달 될 때 이름이 변경됩니다. 당신이 관심을 갖는 실제 사례입니다.

+0

감사합니다, 그 질문에 대한 답변. 나는 처음에 누가 대답했는지에 따라 원숭이에게 수표를주었습니다. – Flaminator

관련 문제