세 개의 Game
개체를 만들고 있습니다. 그러나 두 번째 및 세 번째 개체는 새 blocks
목록을 초기화하지 않습니다 . 디버깅 할 때 초기 Game 개체의 목록을 사용하고 블록 만 추가하는 것을 볼 수 있습니다. 그 이유는 무엇입니까? 그리고 같은 blocks
목록을 사용하지 않는 개체를 어떻게 가질 수 있습니까?
class Game(object):
blocks = []
def __init__(self):
cords = [
[0, 0], [0, 1], [0, 2], [0, 3],
[1, 0], [1, 1], [1, 2], [1, 3],
[2, 0], [2, 1], [2, 2], [2, 3],
[3, 0], [3, 1], [3, 2], [3, 3]
]
random.shuffle(cords)
for i in range(0, 16):
self.blocks.append(Block(i + 1, cords[i][0], cords[i][1]))
이는 클래스 속성blocks
으로 정의하는 방법 때문입니다 . 클래스 속성은 클래스의 단일 인스턴스에 속하지 않으며 바인딩 된 클래스 수준의 모든 곳에서 공유됩니다.
각하게하려면 Game
객체가 자신을 가지고 blocks
, 당신이 원하는 blocks
로 인스턴스 속성 . __init__
메소드 에있는 클래스의 각 인스턴스에 블록을 바인딩하여 모든 인스턴스에 Game
자체 목록이 있도록 할 수 있습니다 blocks
.
def __init__(self):
self.blocks = []
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다