될때까지

((Python)) Replit 55. Class 본문

프로젝트/wecode

((Python)) Replit 55. Class

랖니 2022. 6. 23. 20:56
728x90

Assignment

Class 를 직접 구현해 보겠습니다. Database 라는 이름의 class를 구현해 주세요.

Database 클래스 내부에 다음의 속성(attribute)들을 선언해주세요.

  • name : database의 이름
  • size : 저장할 수 있는 데이터의 max 사이즈. Size를 넘어서는 데이터를 저장할 수 없다.

Database 클래스 내부에 다음의 메소드들을 구현해주세요.

  • insert
  • select
  • update
  • delete

각 메소드들에 대한 설명은 아래와 같습니다.

 

Insert

insert 메소드는 self 외에 2개의 parameter, field와 value 를 받습니다.

Field 는 저장하고자 하는 데이터의 필드명이고 value는 값입니다.

Field  value는 내부적으로 dictionary에 저장되어야 합니다.

insert 메소드는 다음 처럼 호출 할 수 있습니다.

# 객체 이름이 db 라는 가정하에
db.insert("name", "정우성")

insert 메소드는 특별한 return 값은 없습니다.

단, 만일 내부 dictionary의 총 사이즈가 Database 클래스의 size 속성보다 크면 더이상 새로운 값들을 저장하지 말아야 합니다.

 

Select

select 메소드는 self 외에 1개의 parameter, field 를 받습니다.

field 는 읽고자 하는 데이터의 필드명 입니다.

내부적으로 데이터를 저장하고 있는 dictionary에서 해당 field에 해당하는 키와 연결되어 있는 값을 return 해주어야 합니다.

예를 들어, 이미 name이라는 필드명으로 "정우성" 이라는 값을 저장했다고 한다면:

# 객체 이름이 db 라는 가정하에
db.select("name")
> "정우성"

이 되어야 합니다.

만일 해당 필드값으로 저정되어 있는 값이 없다면 None 을 return 해주세요.

 

Update

self 외에 2개의 parameter인 field와 value를 받습니다.

이름 그대로 이미 저장되어 있는 값을 수정하는 메소드 입니다.

# 객체 이름이 db 라는 가정하에
db.update("name", "아이유")

만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.

그리고 특별한 return 값은 없습니다.

 

Delete

delete 메소드는 self 외에 1개의 parameter, field 를 받습니다.

field  지우고자 하는 데이터의 필드명 입니다.

# 객체 이름이 db 라는 가정하에
db.delete("name")

만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.

그리고 특별한 return 값은 없습니다.

 

class Database:
  def __init__(self, name, size):
    # 여기에 코드를 작성해주세요.
    self.name = name
    self.size = size
    self.db = {}   # 이걸 작성해야 풀 수 있는 문제다!!! 
    
  def insert(self, field, value):
    # 여기에 코드를 작성해주세요.
    # 만일 내부 dictionary의 총 사이즈가 database 클래스의 size 속성보다 크면 더이상 새로운 값들을 저장하지 말아야 한다.
    # => 이말인 즉슨, 내부 dictionary의 총 사이즈가 database 클래스의 size 속성보다 작으면 새로운 값들을 저장한다.
    if len(self.db) < self.size:
      self.db[field] = value
      
  def select(self, field):
    # 여기에 코드를 작성해주세요.
    # 내부적으로 데이터를 저장하고 있는 dictionary에서 해당 field에 해당하는 키와 연결되어 있는 값을 리턴해주어야 한다.
    # 만일 해당 필드값으로 저정되어 있는 값이 없다면 None 을 리턴한다.
    if field in self.db:
      return self.db[field]
    else:
      return None
    
    
  def update(self, field, value):
    # 여기에 코드를 작성해주세요.
    # 만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않는다.
    # 특별한 return 값은 없다.

    # 이말인 즉슨, field값에 해당하는 데이터가 저장되어 있으면 수정한다.
    if field in self.db:
      self.db[field] = value

    
  
  def delete(self, field): 
    # Field 는 지우고자 하는 데이터의 필드명이다.
    # field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않는다.
    # 특별한 return 값은 없다.

    # 이말인 즉슨, field값에 해당하는 데이터가 저장되어 있으면, 삭제한다.
    if field in self.db:
      del self.db[field]

 

문제해결을 하기 위해선 문제를 잘 읽어야하는데 레플릿을 풀다보니 문제를 이해하는 능력이 떨어지는 것 같다ㅠㅠ 위의 문제는 __init__안에 딕셔너리를 생성했으면 해결되는 문제였다..!! 

728x90