목록에 새 개체를 추가하면 모든 개체가 마지막 개체처럼 보입니다.

알바로 VS

저는 파이썬으로 첫 번째 프로그램을 만들고 있습니다. 목록에 개체를 추가하고 FOR 루프 내에 이러한 개체를 만듭니다. 문제는 목록을 채운 후 어떤 개체의 값을 확인하면 모두 마지막에 추가 된 개체처럼 보입니다.

class clsNumeros:

    numero = 4
    oper = [int() for i in range(5)]

    def __init__(self, op1, op2, op3, op4):
        self.oper[1] = op1
        self.oper[2] = op2
        self.oper[3] = op3
        self.oper[4] = op4

    def CountOperaciones():
        return 5

    def GetValorOper(self, idxOper):
        num = self.oper[idxOper]

        if num == 1:
            return num
        elif num == 2:
            return sqrt(num)
        elif num == 3:
            return Factorial(num)
        elif num == 4:
            return 4/10
        elif num == 5:
            return sqrt(0.4)

    def GetExprOper(self, idxOper):
        num = self.oper[idxOper]

        if num == 1:
            return num
        elif num == 2:
            return "R(" + num + ")"
        elif num == 3:
            return num + "!"
        elif num == 4:
            return "0.4"
        elif num == 5:
            return "R(0.4)"

    def Display(self):

        txt = ""

        for x in range(1, 5):
            txt = txt + str(self.oper[x])
            txt = txt + " ___ "

        print (txt)



def GeneraNumeros():
    c = []
    idx = [int() for i in range(5)]
    i = 0
    idx[1] = 1
    idx[2] = 1
    idx[3] = 1
    idx[4] = 1
    looping = 1
    n = 0

    while looping == 1:
        num = clsNumeros(idx[1], idx[2], idx[3], idx[4])
        c.append(num)
        n = n + 1
        idx[4] = idx[4] + 1
        for i in range (4, 1, -1):
            if idx[i] > clsNumeros.CountOperaciones():
                idx[i] = 1
            idx[i-1] = idx[i-1] + 1
        if idx[1] > clsNumeros.CountOperaciones():
            looping = 0

        c[5].Display()  # this is for displaying object number 5. All of them look like the last one

    return numeros        

무엇이 잘못 되었을까요? FOR 루프 내에 개체를 만들고 고유 할 것으로 기대할 수 있습니까? 이 아이디어는 ASP.NET에서 잘 작동합니다.

감사!

Kos

문제는 여기에 있습니다.

class clsNumeros:

    oper = [int() for i in range(5)]

클래스 변수는 클래스 정의 시점에 한 번 평가됩니다. 따라서 여기에는 하나의 list 인스턴스 만 생성됩니다. oper대신 생성자에서 초기화 하여 수정 하십시오.

다른 문제:

  • 당신은 0대신 말할 수 있습니다int()
  • 당신은 [0]*5대신 말할 수 있습니다[0 for i in range(5)]
  • 명명 규칙 : 파이썬은 method_nameand를 사용 ClassName합니다.
  • class clsNumeros(object)다른 (이전) 구문이 파이썬에서 약간 다르게 동작하는 "이전 스타일"클래스를 생성하기 때문에 작성하는 습관을 가지십시오.
  • 예를 들어 방법 Display을 사용하여 str.join방법을 단순화 할 수 있습니다.'__'.join(items)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록에 새 개체를 추가 할 때 이전에 추가 된 모든 개체를 덮어 씁니다.

분류에서Dev

목록에 새 개체를 추가하면 이미 저장된 개체를 새 개체로 덮어 씁니다.

분류에서Dev

JavaFX tableview, 새 개체를 추가하면 내 목록이 지워집니다.

분류에서Dev

속성 이름으로 중첩 된 개체를 검색하고 새 개체에 복사해도 모든 개체가 복사되지는 않습니다.

분류에서Dev

새 개체가 이전 개체의 필드를 변경하는 것처럼 보입니다.

분류에서Dev

모든 'ids'는 항상 마지막 개체에서 가져옵니다.

분류에서Dev

목록에 새 개체 추가가 작동하지 않습니다.

분류에서Dev

목록에서 모든 중복 개체를 가져옵니다

분류에서Dev

새 부모 개체를 삽입 할 때 EF가 연결 대신 새 자식 개체를 추가하지 못하도록 하시겠습니까?

분류에서Dev

DbContext에 단일 개체를 추가하면 암시 적으로 무한한 새 개체가 생성됩니다.

분류에서Dev

새 파생 개체를 기본 클래스 포인터에 할당하려고하지만 아무 일도 일어나지 않은 것처럼 보입니다.

분류에서Dev

여러 목록 및 목록 목록에서 고유 한 개체를 가져옵니다. 그런 다음 모든 목록에서 고유 한 개체로 새 목록을 만듭니다.

분류에서Dev

ArrayList에 새 개체를 추가하면 메모리 누수가 발생합니까?

분류에서Dev

ArrayList에 새 개체를 추가하면 메모리 누수가 발생합니까?

분류에서Dev

개체에 개체를 추가하면 이전에 추가 된 데이터가 지워집니다.

분류에서Dev

개체를 만든 후 새 개체를 만들면 첫 번째 개체의 필드가 변경됩니다.

분류에서Dev

컬렉션에 개체를 추가하려고하면 모든 개체 값이 현재 개체로 변경됩니다. 어떻게해야합니까?

분류에서Dev

중첩 된 Realm 목록에 새 객체를 생성하려면 어떻게해야합니까? 상위 개체는 동일하게 유지되어야하지만 "보유"하는 목록을 추가해야합니다.

분류에서Dev

목록 개체에 새 값을 추가하는 데 문제가 있습니다.

분류에서Dev

개체에 별도의 개체를 추가 한 후 모든 개체의 벡터

분류에서Dev

마지막 빈 개체에 대해 새로 추가 버튼 표시

분류에서Dev

모든 Person 개체를 콤보 상자에 추가

분류에서Dev

생성자에 의해 모든 개체 목록에 추가되지 않는 개체

분류에서Dev

SQLAlchemey에서 관계 개체에 새 개체를 추가 할 수 있습니까?

분류에서Dev

내 Ember보기에 새 개체를 추가 할 때 ValueBinding이 작동하지 않습니다.

분류에서Dev

내 Ember보기에 새 개체를 추가 할 때 ValueBinding이 작동하지 않습니다.

분류에서Dev

새 목록을 추가하기 전에 Contains ()를 사용하여 여러 개체 값이 목록에 있는지 확인합니까?

분류에서Dev

모든 레코드를 삭제 한 후 이전 마지막 레코드의 ID보다 높은 ID로 새 개체가 생성되는 이유는 무엇입니까?

분류에서Dev

다른 개체의 목록에 개체를 추가하고 JSF에서 유지하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    목록에 새 개체를 추가 할 때 이전에 추가 된 모든 개체를 덮어 씁니다.

  2. 2

    목록에 새 개체를 추가하면 이미 저장된 개체를 새 개체로 덮어 씁니다.

  3. 3

    JavaFX tableview, 새 개체를 추가하면 내 목록이 지워집니다.

  4. 4

    속성 이름으로 중첩 된 개체를 검색하고 새 개체에 복사해도 모든 개체가 복사되지는 않습니다.

  5. 5

    새 개체가 이전 개체의 필드를 변경하는 것처럼 보입니다.

  6. 6

    모든 'ids'는 항상 마지막 개체에서 가져옵니다.

  7. 7

    목록에 새 개체 추가가 작동하지 않습니다.

  8. 8

    목록에서 모든 중복 개체를 가져옵니다

  9. 9

    새 부모 개체를 삽입 할 때 EF가 연결 대신 새 자식 개체를 추가하지 못하도록 하시겠습니까?

  10. 10

    DbContext에 단일 개체를 추가하면 암시 적으로 무한한 새 개체가 생성됩니다.

  11. 11

    새 파생 개체를 기본 클래스 포인터에 할당하려고하지만 아무 일도 일어나지 않은 것처럼 보입니다.

  12. 12

    여러 목록 및 목록 목록에서 고유 한 개체를 가져옵니다. 그런 다음 모든 목록에서 고유 한 개체로 새 목록을 만듭니다.

  13. 13

    ArrayList에 새 개체를 추가하면 메모리 누수가 발생합니까?

  14. 14

    ArrayList에 새 개체를 추가하면 메모리 누수가 발생합니까?

  15. 15

    개체에 개체를 추가하면 이전에 추가 된 데이터가 지워집니다.

  16. 16

    개체를 만든 후 새 개체를 만들면 첫 번째 개체의 필드가 변경됩니다.

  17. 17

    컬렉션에 개체를 추가하려고하면 모든 개체 값이 현재 개체로 변경됩니다. 어떻게해야합니까?

  18. 18

    중첩 된 Realm 목록에 새 객체를 생성하려면 어떻게해야합니까? 상위 개체는 동일하게 유지되어야하지만 "보유"하는 목록을 추가해야합니다.

  19. 19

    목록 개체에 새 값을 추가하는 데 문제가 있습니다.

  20. 20

    개체에 별도의 개체를 추가 한 후 모든 개체의 벡터

  21. 21

    마지막 빈 개체에 대해 새로 추가 버튼 표시

  22. 22

    모든 Person 개체를 콤보 상자에 추가

  23. 23

    생성자에 의해 모든 개체 목록에 추가되지 않는 개체

  24. 24

    SQLAlchemey에서 관계 개체에 새 개체를 추가 할 수 있습니까?

  25. 25

    내 Ember보기에 새 개체를 추가 할 때 ValueBinding이 작동하지 않습니다.

  26. 26

    내 Ember보기에 새 개체를 추가 할 때 ValueBinding이 작동하지 않습니다.

  27. 27

    새 목록을 추가하기 전에 Contains ()를 사용하여 여러 개체 값이 목록에 있는지 확인합니까?

  28. 28

    모든 레코드를 삭제 한 후 이전 마지막 레코드의 ID보다 높은 ID로 새 개체가 생성되는 이유는 무엇입니까?

  29. 29

    다른 개체의 목록에 개체를 추가하고 JSF에서 유지하려면 어떻게해야합니까?

뜨겁다태그

보관