class Object:
def __init__(self,name, role):
self.name = name
self.role = role
if self.role:
self.role.owner = self
class Role:
def __init__(self,salary):
self.salary = salary
def rrr(self):
print self.owner.name
Object 클래스에 새로운 클래스를 만들어서 저렇게 집어넣고 싶은데 집어넣는 클래스마다 인자를 하나씩 만드는건 좀 애바같은데요.
찾아보니 파이썬은 인스턴스에 프로퍼티를 그냥 만들 수 있다고 합니다.
class Object:
def __init__(self,name):
self.name = name
class Role:
def __init__(self,salary):
self.salary = salary
def rrr(self):
print self.owner.name
pete = Object('Pete')
pete.role = Role(1000)
pete.role.owner = pete
저렇게 마지막 두줄처럼 쓰면 인자는 안만들어도 될것 같은데 뭔가 좀 불편해보입니당.. 그리고 pete 말고 다른 친구들을 만들면 또 저런걸 해야되는 것도 맘에 안들고 ...
결국 상속을 쓰는 방법 밖에 없을까요? 뭔가 동적으로 클래스를 샥샥 만드는 방법이 없을까요?
원하는 프로퍼티를 만들어주는 데코레이터 팩토리를 만들어서 상황에 맞게 데코레이터를 생성해서 클래스에 부여할 수 있음
오 감사합니다. 그걸로 검색해보겠습니당!
글고 파이썬에서 프로퍼티라 하면 저런 것 보다는 property 함수를 통해 만드는 녀석을 말함..
그럼 저친구들은 뭐라고 부르나요
그냥 attribute라고 부름
예를 들어 self.a = a에서 a는 인스턴스의 attribute가 되고, 이 a를 통제하는 property를 클래스에 만듬.. 그리고 이 property는 클래스의 attribute가 되지
내가 만들라고 한 데코레이터도 클래스의 어트리뷰트가 되는 프로퍼티를 넣어두는 거임