본문 바로가기
파이썬

파이썬 Python 전역 변수 및 클래스 기능

by º기록 2021. 1. 19.
반응형

SMS_Inbox의 기본 기능을 제공하는 간단한 파이썬 프로그램을 만들고 있습니다. SMS_Inbox 메서드를 만들었습니다.

store = []
message_count = 0
class sms_store:
    def add_new_arrival(self,number,time,text):
        store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
        **message_count += 1**
    def delete(self,i):
        if i > len(store-1):
            print("Index does not exist")
        else:
            del store[i]
            message_count -= 1

굵게 표시된 부분에서 오류가 발생합니다.

UnboundLocalError: local variable 'message_count' referenced before assignment.

빈 목록 인 전역 변수 저장소를 만들었으며 add_new_variable 개체를 사용할 때 작동합니다. 그러나 어떤 이유로 내 전역 message_count 변수에 값을 추가하지 않습니다.

도와주세요

 

해결 방법

 

그것은 수업이 작동하는 방식이 아닙니다. 데이터는 전역이 아닌 클래스 인스턴스 내에 저장되어야합니다.

class SMSStore(object):
    def __init__(self):
        self.store = []
        self.message_count = 0

    def add_new_arrival(self,number,time,text):
        self.store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
        self.message_count += 1

    def delete(self, i):
        if i >= len(store):
            raise IndexError
        else:
            del self.store[i]
            self.message_count -= 1

sms_store = SMSStore()
sms_store.add_new_arrival("1234", "now", "lorem ipsum")
try:
    sms_store.delete(20)
except IndexError:
    print("Index does not exist")

print sms_store.store

# multiple separate stores
sms_store2 = SMSStore()
sms_store2.add_new_arrival("4321", "then", "lorem ipsum")
print sms_store2.store

 

참조 페이지 https://stackoverflow.com/questions/16210314

 

 

반응형

댓글