저는 최근에 OOP 탐색 킥을 탔습니다. 이벤트의 하나는 해당 이벤트의 일부 속성 세트를 계산하기 :다른 클래스에 대한 선택적 인수로 인스턴스 전달
나는 두 개의 클래스가 있습니다.
class Event(object):
def __init__(self,name,info):
self.name = name
self.category = info.category
self.classification = info.classification
@property
def attributes(self):
return dict((k,v) for k,v in self.__dict__.items())
class class1(object):
def __init__(self,some_number):
self.number = some_number
@property
def category(self):
#stuff
return category
@property
def classification(self):
#stuff
return classification
지금은
e = Event('myevent', class1(42))
e.attributes
{'category': 1,
'classification': None,
'name': 'myevent'}
과 같은 작업을 수행 할 수 있습니다 그러나 나는 등 미래 class2
의 수/조합, class3
의 Event()
인스턴스를 제공하는 옵션을 갖고 싶어; 따라서 e.attributes
이 적절한 모든 속성을 반환하도록 Event()
의 init()
메소드가 정상적으로 처리되기를 원합니다. 압축을 풀기 위해 Event.__init__
매개 변수를 주면 할당 할 필요가있는 속성 이름을 알 필요가 없습니다. 궁극적으로이 이벤트를 만들고이 패러다임을 사용하여 필요에 따라 다양한 속성 집합을 만들고 업데이트 할 수있게하려는 것입니다. 가능한가? 내 생각
첫째, 왜 dict ((k, v) for k, v 자체에 .__ dict __. 항목())'그냥 dict를 복사하려면? 둘째, 어째서 왜 처음에 사전에 딕셔너리를 속이고있는 것입니까? 어쩌면 당신은 [당신의 부분적인 해결책을 보여주는 대신에 실제로 성취하려는 것을 더 잘 설명해야합니다] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – abarnert
귀하의 질문을 이해하려고하지만 매우 명확하지 않습니다. 나는 당신이 그것을 더 잘 설명한다면 당신 자신이 대답을 내놓을 수있는 좋은 기회가 있다고 의심한다. –
나는 내 머리를 숙 였기 때문에 나는 xy 문제에 유죄 일 수는 있지만 정교하게 노력할 것이다. Miku는 내가 원하는 것을 거의 가지고있다. 덧붙여 말하면 나는 덧셈 과정을 밟고있다 : 두 개의 예제 호출 후에'e.attributes'를 갱신하여 그 값이 '{'i_am_totally_different ':'yes, indeed ' '이름': 'myevent', '범주': '범주 값', '분류': '분류 값', '번호': 42} '. Mike의 질문에 답하기 위해, 처음에는'e'를 만들 때 모든 클래스에 필요한 모든 정보를 가지지 않았을 수도 있습니다.하지만 나는 단편적 업데이트 속성을 원하지 않습니다. – verbsintransit