여기에 내가 대화 형 파이썬 세션을 입력 한 후 상황지역 변수
class Person(object):
NumRid = 1
def __init__(self, name, rid = NumRid):
self.name = name
self.rid = rid
NumRid += 1
class Investor(Person):
pass
및 유형 from file import *
에서 다음 투자자 ('밥') 그리고 그것은 하더군요 로컬 변수 NumRid는 할당 전에 NumRid += 1
에서 참조됩니다.
Google 검색에서 알 수있는 한 NumRid는 클래스의 로컬 네임 스페이스에 있어야하며 클래스 기능에서 액세스 할 수 있어야합니다 .... 그럼이게 뭐야? 나는 둘 다 지구 적으로 선언 할 필요가 있는가? 또는 클래스 네임 스페이스의 NumRid를 찾도록 입력 할 수있는 마법의 단어가 있습니까?
'UnboundLocal' 질문은 여기에 일주일에 두 번 묻습니다. 검색 및 점수 별 정렬을 사용하면 몇 가지 자세한 설명이 나옵니다 (간단히 말해서 주변 범위에 정의 된 변수에 할당 할 수는 없습니다. 이처럼). 또 다른 일. 'rid = NumRid'는 기본 인수가 컴파일 타임에 평가되어서'rid'가 항상 0이되기 때문에 당신이 원하는 것을하지 않을 것입니다. 클래스 변수를 직접 참조하고 중복 매개 변수를 제거하면 ... – l4mpi
글쎄, 새 투자자가 생성 될 때마다 제거하고 기본 값으로 지정하고 다른 값으로 전달할 수있는 옵션을 지정합니다. 동작을 확인하고 모두 1로 초기화하는 것으로 보입니다. 그것을 이해하고, 당신이 의미하는 바입니다. – Zach
네가 맞다. 나의 선행 논평에서 '0'은 '1'이어야만한다. 다른 값을 전달할 수있게하려면 센티널 값을 기본값으로 사용하십시오. 유효한 값이 아니면 일반적으로 '없음'을 선택합니다. 그런 다음 인수가 센티넬이면 메서드 내에서 테스트하고 현재 인수 인 경우에는 현재 NumRid를 취하고 그렇지 않으면 인수 값을 가져옵니다. – l4mpi