파이썬 공부

2023_11_28 보충_함수형문법, 클래스

gyk7 2023. 11. 29. 20:53

1. 

 내가 본 영화 정보를 기록하는 클래스 Movie를 만들어주세요.

- 조건1. 클래스 변수는 total_num(총 리뷰수),  movie_class(현재 클래스의 이름, 'Movie'),   인스턴스 변수는 name(제목), actor(배우), review(한줄평), score(별점)는 꼭 들어있습니다.
- 조건2. update라는 메소드를 이용하여 추후에 영화 관련 기록을 수정할 수 있습니다.
- 조건3. 영화명.all() 메소드를 이용하여 관련 영화의 전체 내용을 출력할 수 있습니다.


Movie 클래스의 인스턴스 생성 예시.

```
패터슨 = Movie('패터슨', '아담 드라이버', '아하!', 4.5)
```

패터슨.all() 의 출력 예시.
```
제목: 패터슨
배우: 아담 드라이버
리뷰: 아하!
별점: 4.5
```

class Movie :

# 클래스 변수 total_num, movie_class
    total_num = 0 
    movie_class = 'Movie'

    movie_name = []

 

# 초기화를 위한 함수. 인스턴스 변수 설정
    def __init__(self, name, actor, review, score) :
        self.name = name
        self.actor = actor
        self.review = review
        self.score = score

# 클래스 변수 호출할 때 (클래스명.클래스변수)

# 인스턴스가 생성될 때마다 증가할 수 있도록 설정
        Movie.total_num += 1

        Movie.movie_name.append(self)
 

# 어떤 것을 수정할 지 골라주는 과정
    def update(self) :
        select_ = input('무엇을 변경하실건가요? (제목, 배우, 리뷰, 별점 중 하나)')

        if select_ == '제목' :
            name = input('어떻게 변경하실건가요? ')
            self.name = name

        elif select_ == '배우' :
            actor = input('어떻게 변경하실건가요? ')
            self.actor = actor

        elif select_ == '리뷰' :
            review = input('어떻게 변경하실건가요? ')
            self.review = review

        else :
            score = input('몇점으로 변경하실건가요? ')
            self.score = score

        print('변경이 완료되었습니다.')

 

# 영화명.all() 을 입력할 때 전체 내용 출력할 수 있도록 표현
    def all(self) :
        print("제목 :", self.name)
        print("배우 :", self.actor)
        print("리뷰 :", self.review)
        print("별점 :", self.score)

패터슨 = Movie('패터슨', '아담 드라이버', '아하!', 4.5)
패터슨.all()

 

[결과화면]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 해당 클래스를 활용하여 자신이 좋아하는 3개의 영화를 리뷰한 인스턴스를 만들어주세요. 인스턴스.all() 명령어로 호출도 해보세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. for문을 이용하여 위에서 리뷰한 영화 3개를 한꺼번에 출력해보세요.

#이를 위해 클래스 변수 movie_name을 리스트로 만들어줌.

# __init__ 메소드에서 클래스 변수 movie_name에 name, actor, review, score  영화정보가 들어가게 만들어줌.

 

 

 

 

 

 

 

 

 

 

 

 

4. 위에서 리뷰한 영화 3개의 평균별점을 구해보세요.

 

 

 

 

-5. Movie 클래스로 작성된 리뷰의 총 개수를 확인하는 클래스메소드 count_review_num()을 작성해주세요. 실행결과는 아래와 같습니다.

 

 

 

클래스 메소드로 추가해줌. (클래스 메소드는 첫번째 매개변수로 cls받음)

 @classmethod
    def count_review_num(cls) :
        print('클래스메소드: Movie 클래스를 통해 만들어진 총 리뷰 수: ', cls.total_num)

 

 

 

 

 

 6. 위에서 만든 Movie 클래스를
- update 메소드로 호출하면 영화이름은 조회만 할 수 있고 수정은 할 수 없도록 Movie 클래스를 수정해주세요.
- 이후 호출시 movie_class 클래스변수를 출력하는 static method staticMovie() 를 만들어주세요

(1) 변경해줌. 

 

 

 

(2) staticmethod staticMovie() 메소드 추가해줌.

 

 

 

 

 

[출력 화면]

 

 

 

 

 

7. 다시 5번 문항의 코드를 활용하여 update 메소드로 가장 마지막 영화의 영화제목 뒤에 2를 넣어 수정 후 확인해주세요.

 

 

 

 

 

 

 

 

8. Movie 클래스를 상속받은 KoreanMovie 클래스를 정의하고
클래스변수로 class_name = '한국영화'를, 생성시 입력되어야 하는 값으로 director(감독)을 추가해주세요.

새 인스턴스를 만들 때에는 아래와 같은 값이 입력되며 속성들을 확인할 수 있어야 합니다.


~~~
jigu = KoreanMovie('지구를지켜라', '신하균', '장준환', '5', '내리 7번 본 어릴적 최고의 영화')
~~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[결과화면]