List의 한계

여러 객체를 만들 때 아래처럼 코드를 순차적으로 추가한다면 오류가 날 가능성이 높다. 또한 직업이 Software Engineer이 아니라 Designer인 경우라면, 또는 복잡한 객체들을 나타내는 경우. 따라서 List는 완벽한 데이터 구조가 아니고 클래스가 나온 이유이다.

se1 = ["Software Engineer", "Max", 20, "junior", 5000]
se2 = ["Software Engineer", "Lisa", 25, "senior", 5000]

Class

클래슨 기본적으로 무엇을 정의해야하는 청사진이고 파이썬에서 클래스를 정의하는 방법은 아래와 같다.

class SoftwareEngineer:
    pass

Instance

클래스는 데이터 구조의 청사진일뿐이지만 인스턴스는 아래와 같이 정의하고 인스턴스를 생성하여 구체적인 자료를 넣는다.

se1 = SoftwareEngineer()

초기화

클래스의 가장 처음에는 초기화 함수(init)가 들어가서 함수의 초기화를 해야한다.

self.에 담긴 변수들은 인스턴스 속성이라고 한다.

class SoftwareEngineer:

    def __init__(self, name, age, level, salary) :
        self.name = name
        self.age = age
        self.level = level
        self.salary = salary

이후 인스턴스에 값을 넣어주면 인스턴스 속성에 접근할 수 있고 print를 통해서 저장된 값을 출력할 수 있다.

class SoftwareEngineer:

    def __init__(self, name, age, level, salary) :
        self.name = name
        self.age = age
        self.level = level
        self.salary = salary

se1 = SoftwareEngineer("Max", 20, "junior", 5000)
print(se1.name, se1.age)

클래스 속성

인스턴스 속성은 초기화 함수 안에 담겨있었다. 클래스 속성은 아래의 코드처럼 작성을 한다. alias = "Keyboard Magician" 이렇게 코드를 작성하면 클래스의 별칭을 사용할 수 있다.

class SoftwareEngineer:

    alias = "Keyboard Magician"

    def __init__(self, name, age, level, salary) :
        self.name = name
        self.age = age
        self.level = level
        self.salary = salary

se1 = SoftwareEngineer("Max", 20, "junior", 5000)
print(se1.name, se1.age)