반복적으로 서브 클래스를 생성하고 객체를 클래스 속성으로 저장

Gio

복잡한 계산을 수행하고 결과를 생성하는 클래스가 있습니다 MyClass.myresults.

MyClass.myresults예를 들어, 서로 다른 특성 (와 클래스 자체는 사실이다 MyClass.myresults.mydf1, MyClass.myresults.mydf2.

이제 MyClass시나리오 목록에 따라 반복적 으로 실행해야합니다 ( scenarios=[1,2,[2,4], 5].

이것은 간단한 루프로 발생합니다.

    for iter in scenarios:
        iter = [iter] if isinstance(iter, int) else iter
        myclass = MyClass() #Initialize MyClass
        myclass.DoStuff(someInput) #Do stuff and get results
        results.StoreScenario(myclass.myresults, iter)

그리고 각 반복 저장소의 끝에서 MyClass.myresults.

Results각 반복에서 하위 클래스를 만들고 그 scenario_1, scenario_2, scenario_2_4안에 저장 하는 별도의 클래스 ( ) 를 만들고 싶습니다 MyClass.myresults.

class Results:
    # no initialization, is an empty container to which I would like to add attributes iteratively
    class StoreScenario:
        def __init__(self, myresults, iter):
            self.'scenario_'.join(str(iter)) = myresults #just a guess, I am assuming this is wrong

다른 접근 방식에 대한 제안은 환영받을 것 이상입니다. 저는 수업에 익숙하지 않으며 이것이 허용 가능한 접근 방식인지 또는 내가 끔찍한 일을하고 있는지 (투박하거나 메모리 비효율적이거나 기타) 확실하지 않습니다.

Gio

그래서 setattr 을 사용하여 해결했습니다 .

class Results:

    def __init__(self):
        self.scenario_results= type('ScenarioResults', (), {}) # create an empty object


    def store_scenario(self, data, scenarios):
        scenario_key = 'scenario_' + '_'.join(str(x) for x in scenarios)
        setattr(self.simulation_results, scenario_key, 
                subclass_store_scenario(data))

class subclass_store_scenario:
    def __init__(self, data):

        self.some_stuff = data.result1.__dict__
        self.other_stuff = data.result2.__dict__

이를 통해 다음과 같은 것을 호출 할 수 있습니다.

results.scenario_results.scenario_1.some_stuff.something
results.scenario_results.scenario_1.some_stuff.something_else

다른 측정 값, 요약 또는 시나리오 별을 계산해야하므로 다음을 사용하여 반복적으로 할당 할 수 있습니다 setattr.

    def construct_measures(self, some_data, configuration):
        for scenario in self.scenario_results: 
            #scenario is a reference to the self.scenario_results class. 
            #we can simply add attributes to it
            setattr(scenario , 'some_measure',
                    self.computeSomething(
                            some_data.input1, some_data.input2))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 배열을 반복적으로 반복하고 객체 요소를 클래스 이름을 저장하는 배열로 변환

분류에서Dev

JSON 객체를 받아서 속성 속성으로 변환하는 자바 스크립트 클래스

분류에서Dev

추가 속성으로 클래스를 확장하는 방법

분류에서Dev

목표 C : 속성으로서의 클래스 객체 배열

분류에서Dev

클래스를 다른 클래스의 속성으로 사용

분류에서Dev

정적 메서드를 사용하여 현재 클래스를 확장하는 객체 생성

분류에서Dev

암시 적으로 TypeScript에서 JavaScript 클래스 속성 확장

분류에서Dev

인스턴스 속성으로 클래스의 인스턴스를 반복

분류에서Dev

Java에서 추상 클래스를 확장하는 모든 클래스의 객체 생성

분류에서Dev

인터페이스-클래스를 기반으로 객체를 생성하기 위해 인터페이스를 상속하는 클래스 등록

분류에서Dev

종속 클래스의 생성자에서 추상 클래스를 데이터 유형으로 사용

분류에서Dev

Mixin으로 클래스 속성 확장

분류에서Dev

Generic으로 추상 클래스를 확장하는 구체적인 클래스를 동적으로 할당

분류에서Dev

클로저를 사용하여 클래스의 메서드 장식

분류에서Dev

서브 클래스를 수퍼 클래스로 캐스트하고 두 클래스가 가진 함수 호출

분류에서Dev

클래스에서 객체 배열을 생성 한 다음이를 서브 클래스로 전달하는 방법은 무엇입니까?

분류에서Dev

클래스 / 객체를 사용하지 않고 재귀 적으로 트리 계층 구조 생성

분류에서Dev

(익명 클래스) 객체 linq에서 속성 / 필드를 얻으려고 시도하는 중

분류에서Dev

클래스의 속성으로서 객체의 데이터베이스 목록

분류에서Dev

EF Core의 저장 프로 시저를 제외한 클래스 속성 무시

분류에서Dev

자식 생성자에서 생성 된 객체로 부모 클래스를 생성하는 방법

분류에서Dev

서브 클래스의 메서드를 부분적으로 조롱하면 슈퍼 클래스 생성자를 우회합니다.

분류에서Dev

나쁜 자바에서 상위 클래스로 다른 자식 클래스를 저장하는 것입니다

분류에서Dev

다른 클래스를 속성으로 포함하는 클래스

분류에서Dev

Scala에서 동적으로 클래스 속성 생성

분류에서Dev

클래스 객체를 반복하고 Python에서 속성 값을 변경하는 방법

분류에서Dev

주어진 문자열에서 동적으로 클래스 인스턴스를 만들고 사전에 깊은 복사본을 저장합니다.

분류에서Dev

파생 객체를 기본 클래스별로 벡터에 저장하고 제거시 파생 객체로 반환

분류에서Dev

단일 속성 클래스를 속성 유형으로 변환

Related 관련 기사

  1. 1

    PHP 배열을 반복적으로 반복하고 객체 요소를 클래스 이름을 저장하는 배열로 변환

  2. 2

    JSON 객체를 받아서 속성 속성으로 변환하는 자바 스크립트 클래스

  3. 3

    추가 속성으로 클래스를 확장하는 방법

  4. 4

    목표 C : 속성으로서의 클래스 객체 배열

  5. 5

    클래스를 다른 클래스의 속성으로 사용

  6. 6

    정적 메서드를 사용하여 현재 클래스를 확장하는 객체 생성

  7. 7

    암시 적으로 TypeScript에서 JavaScript 클래스 속성 확장

  8. 8

    인스턴스 속성으로 클래스의 인스턴스를 반복

  9. 9

    Java에서 추상 클래스를 확장하는 모든 클래스의 객체 생성

  10. 10

    인터페이스-클래스를 기반으로 객체를 생성하기 위해 인터페이스를 상속하는 클래스 등록

  11. 11

    종속 클래스의 생성자에서 추상 클래스를 데이터 유형으로 사용

  12. 12

    Mixin으로 클래스 속성 확장

  13. 13

    Generic으로 추상 클래스를 확장하는 구체적인 클래스를 동적으로 할당

  14. 14

    클로저를 사용하여 클래스의 메서드 장식

  15. 15

    서브 클래스를 수퍼 클래스로 캐스트하고 두 클래스가 가진 함수 호출

  16. 16

    클래스에서 객체 배열을 생성 한 다음이를 서브 클래스로 전달하는 방법은 무엇입니까?

  17. 17

    클래스 / 객체를 사용하지 않고 재귀 적으로 트리 계층 구조 생성

  18. 18

    (익명 클래스) 객체 linq에서 속성 / 필드를 얻으려고 시도하는 중

  19. 19

    클래스의 속성으로서 객체의 데이터베이스 목록

  20. 20

    EF Core의 저장 프로 시저를 제외한 클래스 속성 무시

  21. 21

    자식 생성자에서 생성 된 객체로 부모 클래스를 생성하는 방법

  22. 22

    서브 클래스의 메서드를 부분적으로 조롱하면 슈퍼 클래스 생성자를 우회합니다.

  23. 23

    나쁜 자바에서 상위 클래스로 다른 자식 클래스를 저장하는 것입니다

  24. 24

    다른 클래스를 속성으로 포함하는 클래스

  25. 25

    Scala에서 동적으로 클래스 속성 생성

  26. 26

    클래스 객체를 반복하고 Python에서 속성 값을 변경하는 방법

  27. 27

    주어진 문자열에서 동적으로 클래스 인스턴스를 만들고 사전에 깊은 복사본을 저장합니다.

  28. 28

    파생 객체를 기본 클래스별로 벡터에 저장하고 제거시 파생 객체로 반환

  29. 29

    단일 속성 클래스를 속성 유형으로 변환

뜨겁다태그

보관