파이썬/파이썬(python) 중급

[17-4 파이썬] 클래스에 메소드 만들기

Olivia-BlackCherry 2022. 8. 25. 14:42

속성이 객체가 가진 것이라면,

메소드는 객체가 하는 것이다.

 

오늘은 클래스 내부 메소드를 만드는 방법을 알아본다.

 

class User:
    def __init__(self, id, user_name): 
        self.id = id
        self.name = user_name
        self.followers = 0
        self.following = 1
        
user_1 = User(1, "Jenny")
user_2 = User(2, "Olivia")

현재는

User 클래스를 선언하고, 내부에 속성만 만들어진 상태다.

 

init함수에 id, user_name이 파라미터로 오고,

followers, following 속성은 기본값을 갖는다.

 

 이닛 함수의 파라미터인 id와 user_name에 해당하는 값을 넣어

user_1, user_2 객체를 생성했다.

 

여기서 추가로 메소드를 만들어보자.

객체에 속하는 함수는 특별히 '메소드'라고 부른다.

1. def 키워드 적기
2. 메소드 이름을 스네일 케이스로 입력하기 
3. 괄호쓰고, 입력값 넣기
4. 콜론으로 줄을 끝냈다는 신호 주기
class User:
    def __init__(self, id, user_name): 
        self.id = id
        self.name = user_name
        self.follower = 0
        self.following = 1
    def follow(self, users):
        # 메소드가 할 일
   
user_1 = User(1, "Jenny")
user_2 = User(2, "Olivia")

클래스 내부에 메소드를 정의했다.

다음으로 할일은 아래와 같다.

 

5. 한줄 띄고, 들여쓰기
6. 메소드 내용 적기

 

class User:
    def __init__(self, id, user_name): 
        self.id = id
        self.name = user_name
        self.follower = 0
        self.following = 1
    def follow(self, users):
        users.follower += 1
        self.following += 1
   
user_1 = User(1, "Jenny")
user_2 = User(2, "Olivia")

메소드에서 첫 매개변수로 늘 self가 있어야 한다. 

self는 메소드가 호출될 때, 그것을 호출한 객체가 들어오는 자리다.

 

이해가 어려우니, 

차근차근

메소드의 내용을 해석해보자

users.follower +=1 

follow 메소드를 들여다보자.

이 함수가 한 번 실행될 때,

파라미터 users속성 follower의 값이 1 만큼 더해진다는 것을 알 수 있다. 

__init__함수에서 self.follower의 기본 값이 0이었기에

0에서부터 시작해, 한 번 실행될 때마다 값이 1씩 증가한다.

self.following += 1

follow 메소드를 보면

이 함수가 한 번 실행될 때,

이 메서드를 호출한 객체속성 following 값이 1만큼 더해진다는 것을 알 수 있다. 

__init__함수에서 self.following의 기본 값이 1이었기에

1에서부터 시작해, 한 번 실행될 때마다 값이 1씩 증가한다. 

 

메소드를 호출해보고, 결과를 프린트해보자.

class User:
    def __init__(self, id, user_name): 
        self.id = id
        self.name = user_name
        self.follower = 0
        self.following = 1
    def follow(self, users):
        users.follower += 1
        self.following += 1
   
user_1 = User(1, "Jenny")
user_2 = User(2, "Olivia")

user_1.follow(user_2)

print(user_1.follower)
print(user_1.following)
print(user_2.follower)
print(user_2.following)