FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

Python Class

클래스는 단어의 첫글자가 대문자 PythonClass

파이썬에서는 자바와 다르게 클래스 없이도 프로그램을 만들수 있다

하지만 클래스를 알고 사용하지 않는 것과 몰라서 사용 못하는 것은 코드 이해 및 편리함에서 차이가 있으므로 간단하게 알아보도록 하자

클래스

많이들 클래스는 설계도면이고 그 설계도면(클래스)로 만들어지는 애들이 객체 라고들 한다

python에서 클래스를 정의

class MyClass:
    클래스 구성
#객체 a , b 의 생성
a = MyClass()
b = MyClass()

※객체 ? 인스턴스?
인스턴스 : 관계를 나타낼 때 사용 ex) a는 MyClass의 인스턴스 객체 : 타입을 나타낼때 사용 ex) a는 객체


클래스의 구성요소

메서드 : 함수인데 클래스에 포함된 함수

첫번째 parameterself를 사용한다

class MyClass:
    def mymethod(self, a):

객체를 생성하게 되면 객체 자기자신이 메서드의 인자로 전달된다


메서드를 사용하는 방법

  • 클래스.메서드
a = MyClass()  #a 객체 생성
MyClass.mymethod(a, value)   #클래스.메소드를 이용하여 사용
                             #⭐이때 a객체를 꼭꼭 전달해줘야한다
  • 객체.메서드(권장)
a = MyClassl()   #a 객체 생성
a.mymethod(value)     # 객체.메서드를 이용하여 사용
                      #⭐꼭 a객체를 인자로 전해주지 말자
  • 객체변수: 객체마다 독립된 변수를 가진다 객체.변수이름 으로 정의한다
myObject.myvariable1
myObject.myvariable2
myObject.myvariable1
  • 클래스 변수: 클래스 변수는 객체마다 공유하고 있는 변수
class MyClass:
    classvariable = 1

a=MyClass()
b=MyClass()

MyClass.classvariable   ==> 1
a.classvariable         ==> 1
b.classvariable = 2   #클래스 변수를 2로 바꿨다

a.classvariable  ==> 2 #다른 객체라도 2로 변경

# 이런식으로 MyClass로 생성된 객체라면 공유하는 변수id(Class.클래스변수)      id(객체.클래스변수)
    #이렇게 해주면 어디에 저장이 되어있는지 주소값이 나오는데
    #같은 주소값이라는 말은 같은 클래스를 쓰고 있다는 말이다
  • 생성자: 객체를 생성함과 동시에 객체에 대한 설정을 할 수 있다
class MyClass:
    def __init__(self, value1,value2):
        self.value1 = value1
        self.value2 = value2

#선언을 해주고
a = MyClass(1,2) 

#이렇게 객체를 생성하면

a.value1 => 1      
a.value2 => 2
  • 클래스 상속

클래스를 변경하지 않고 기능 추가, 기존의 기능덮어쓰기 등에 사용한다

class ChildClass(ParentClass):
       def childmethod(self):

이런식으로 ParentClass의 변수,메서드를 ChildClass는 사용할수 있고 추가적인 메서드 변수를 만들고 사용할수 있다

단! 반대로 ChildClass에서 새롭게 정의된 메소드와 변수는 ParentClass로 만든 객체로는 사용할수 없다

  • 메소드 오버라이딩(overriding)

오버라이딩이란 덮어쓴다는 의미로 ParentClass에서 사용된 method를 똑같이 ChildClass에서 재정의하고 내용만 바꾸어 사용하는 것이다

그럼 ParentClass객체에서는 ParentClass의 method가 ChildClass객체에서는 ChildClass의 method를 사용할 수 있다.