파이썬 클래스와 객체 [Python]

Pturt·2023년 3월 29일
0

파이썬

목록 보기
7/7

< 클래스와 객체 >

파이썬은 객체 지향언어로 클래스와 객체는 객체 지향언어에서 사용되는 개념이다.

객체 지향 언어란 각 기능을 맡는 부분부분을 객체로 만들어 조립형으로 전체 프로그램을 만드는 것을 말한다.

클래스를 기반으로 생성한 결과물인 객체의 조합으로 프로그램을 만든다.

서로 다른 객체는 고유한 성질을 가지기 때문에 서로 영향을 주지 않고 독립적으로 작동한다.

클래스

클래스란 객체를 만들기 위한 설계도, 틀을 말하며
상태나 변수를 정의하는 필드와, 동작을 정의하는 메소드로 이루어져있다.

class Student: 
	def __init__(self, name, age) : // 생성자 메소드
    	self.name = name 
   		self.age = age	// 필드

    def sayName(self) :	//메소드  
        print(self.name+"입니다.")
        
a = Student("kim", 24)
a.sayName()
	>> kim입니다

✔ 생성자

__init__은 클래스의 생성자 메소드를 만드는 문법이다.
생성자란 객체가 생성될 때 자동으로 호출되는 메소드를 말한다.

클래스를 생성하고 객체를 만들 때, 클래스에 생성자 메소드가 만들어져 있다면 생성자 조건을 충족해야 객체를 생성할 수 있다.

위의 Student 클래스에는 self, name, age가 매개변수로 있는 생성자가 있으므로 Student의 인스턴스 a를 만들 때 이름에 "kim", 나이에 24를 지정해주었다.

✔ self
코드 중간중간에 매개변수 self가 보일 것이다.
생성자의 매개변수로 self, name, age가 필요한데 kim과 24만 입력해주어도 오류가 발생하지 않는 이유는 매개변수의 맨 앞에 있는 self는 객체 자신을 전달하는 변수이기 때문이다.

객체가 아니라 클래스를 통해 메소드를 호출할 경우 어떻게 쓰이는지 이해하기 쉽다.

class Student :
    def __init__(self, name) :
        self.name = name
    def sayName(self, age) :
        print("이름: " + self.name +", 나이: "+ str(age) + "입니다")
a = Student("Park")

Student.sayName(a, 24)
	>>이름: Park, 나이: 24입니다

a.sayName(24)와 다르게 객체를 명시해주었다.

✔ 클래스의 상속

클래스의 상속이란 다른 클래스의 기능을 그대로 가져오면서 자신만의 기능을 더 추가할 수 있도록 하는 것을 말한다.

상속의 기반이 되는 클래스를 부모 클래스라고 하고 상속을 받는 클래스를 자식 클래스라고 한다.

클래스 상속을 받기 위해서는 클래스를 만들 때 이름 뒤에 상속할 클래스의 이름을 넣으면 된다.

class ChildClass(ParentClass) : 
	...
    ...
    ...

상속을 받은 자식 클래스는 기능이 명시되어있지 않아도 부모 클래스의 기능들을 사용할 수 있다.

class StudentPlus(Student) :    
    pass
b = StudentPlus("Hong", 30)
b.sayName()
	>>Hong입니다

✔ 메소드 오버라이딩

자식 클래스가 부모 클래스를 상속할 때 기능을 수정하고 싶다면 부모 메소드를 수정하지 사용하지 않고 메소드 오버라이딩을 통해 바꿔 사용할 수 있다.

class Calc :
    def __init__(self, num) :
        self.num = num
    def plus(self) : 
        self.num += 1

class Clac2(Calc) : 
    def plus(self) : 
        self. num +=2
b = Clac2(3)
b.plus()
print(b.num)
	>>5

부모 클래스는 생성자에 1을 더하는 메소드였고 같은 plus메소드를 오버라이딩한 자식 클래스는 생성자에 2를 더하는 메소드이다.
3을 입력받아 계산한 결과 2를 더한 5가 출력되었다.

이와 같이 부모 클래스에 있는 메소드를 동일한 이름으로 다시 만드는 것을 메소드 오버라이딩이라고 한다. 부모 클래스의 메소드가 아닌 자식 클래스의 메소드가 호출된다.

profile
애송이 개발자

0개의 댓글

관련 채용 정보