>  Q&A  >  본문

python - class 类的问题

class C:
    count=0
    
a=C()
b=C()
c=C()

print(a.count)
print(b.count)
print(c.count)

c.count+=10

print(c.count)
print(a.count)
print(b.count)
print(C.count)

C.count+=100

print(a.count)
print(b.count)
print(c.count)
0
0
0

10
0
0
0

100
100
10

为什么后来a.count b.count的值都是100 而c.count的值是10

PHPzPHPz2740일 전594

모든 응답(4)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-18 10:25:43

    클래스 속성은 Java의 정적 변수와 동일하며 클래스에 속합니다.
    여기서 c의 인스턴스 속성을 c.count+=10으로 정의했기 때문입니다.
    그래서 print(c.count)는 10입니다

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:25:43

    c.count+=10은 인스턴스 객체 c에 인스턴스 속성을 동적으로 추가하는 것과 동일하기 때문입니다. c.count를 인쇄하면 클래스 속성 대신 인스턴스 속성이 인쇄됩니다

    으아악

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:25:43

    차근차근 보시면 됩니다.

    먼저 세 개의 C 클래스 객체를 인스턴스화합니다.
    a, b, c의 개수 값을 인쇄합니다.

    여기에는 속성의 검색 순서가 포함됩니다.
    먼저 인스턴스에 count 값이 있는지 확인하세요. 찾을 수 없으면 상위 수준으로 검색합니다. 인스턴스의 상위 레벨이 클래스입니다. class 속성에 개수가 있는 것으로 확인되면 여기에 개수가 출력됩니다.

    c.count += 10
    원래 c.count는 C.count를 참조하지만 이제 여기에 새 값을 할당하는 것은 count 속성을 갖는 c 인스턴스와 동일합니다.
    a, b, c, C의 개수 값을 인쇄합니다. 이 시점에서 인스턴스 c에는 이미 자체 카운트 값이 있습니다.

    C.count += 100
    클래스 C의 카운트 값을 변경합니다. c에는 고유한 카운트 값이 있고 a와 b는 여전히 C의 카운트 값을 참조합니다.

    아마도 그럴 것 같습니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:25:43

    한 문장으로 말하자면, 인스턴스가 클래스의 정적 변수에 값을 할당하면 실제로 인스턴스에 속성이 동적으로 추가됩니다. 정적 속성이 인스턴스 속성과 충돌하는 경우에는 정적 속성에 아무런 영향을 미치지 않습니다. 인스턴스에 접근하는 순서는 다음과 같습니다. 우선 순위는 다음과 같습니다: 인스턴스-》class

    https://segmentfault.com/a/11...

    회신하다
    0
  • 취소회신하다