파이썬 클래스/객체
파이썬은 객체 지향 프로그래밍 언어입니다.
파이썬의 거의 모든 것은 속성과 방법을 가진 객체이다.
클래스는 객체 생성자 또는 객체를 만들기 위한 "블루프린트"와 같다.
파이썬 클래스 생성하기
클래스를 만들려면 키워드 class 를 사용한다:
x라는 속성으로 MyClass라는 클래스를 만든다:
class MyClass: x = 5 print(MyClass) |
class MyClass: x=5라는 클래스를 만든다.
위의 코드를 실행하면 아래 그림과 같다.
파이썬 오브젝트 생성하기
이제 MyClass라는 클래스를 사용하여 객체를 만들 수 있다:
p1이라는 객체를 만들고 x 값을 인쇄한다:
class MyClass: x = 5 p1 = MyClass() print("p1.x : ", p1.x) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 __init()__ 함수
위의 예는 가장 간단한 형태의 클래스와 객체이며 실제 응용 프로그램에서 유용하지 않다.
클래스의 의미를 이해하려면 내장된 __init__() 함수를 이해해야 힌다.
모든 클래스에는 클래스를 시작할 때 항상 실행되는 __init__()라는 함수가 있다.
__init__() 함수를 사용하여 객체 속성 또는 객체를 생성할 때 필요한 다른 작업에 값을 할당한다:
Person이라는 이름의 클래스를 만들고 __init__() 함수를 사용하여 이름과 나이 값을 할당한다:
class Person: def __init__(self, name, age): self.name = name self.age = age p1 = Person("John", 36) print("p1.name : ", p1.name) print("p1.age : ", p1.age) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 클래스 __str()__ 함수
__str__() 함수는 클래스 객체가 문자열로 표시될 때 반환해야 하는 것을 제어한다.
__str__() 함수를 설정하지 않으면 개체의 문자열 표현이 반환된다:
__str__() 함수가 없는 개체의 문자열 표현:
class Person: def __init__(self, name, age): self.name = name self.age = age p1 = Person("John", 36) print("p1 : ", p1) |
위의 코드를 실행하면 아래 그림과 같다.
__str__() 함수를 사용하는 개체의 문자열 표현:
class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"{self.name}({self.age})" p1 = Person("John", 36) print("p1 : ", p1) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 객체 메소드
객체에는 메소드도 포함될 수 있다. 객체의 메소드는 객체에 속하는 함수이다.
사용자 클래스에서 메소드를 만들어 보겠다:
인사말을 인쇄하는 함수를 삽입하여 p1 객체에서 실행한다:
class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(self): print("안녕하세요 제 이름은 " + self.name + " 입니다") p1 = Person("길동", 36) p1.myfunc() |
p1=Person("길동", 36) 구문은 Person 클래스를 통해 p1 객체가 생성이 된다. p1 객체의 속성 name과 age에 '길동', 36 값으로 초기화하여 p1 객체를 생성하였다.
p1.myfunc() 메소드를 실행하면 print()구문이 실행이 된다.
위의 코드를 실행하면 아래 그림과 같다.
파이썬 클래스 self 매개변수
self 매개 변수는 클래스의 현재 인스턴스에 대한 참조이며 클래스에 속하는 변수에 액세스하는 데 사용된다.
이름을 self로 지정할 필요는 없으며 원하는 대로 이름을 지정할 수 있지만 클래스의 모든 함수의 첫 번째 매개 변수여야 한다:
self 대신 myobject와 abc라는 단어를 사용한다:
class Person: def __init__(myobject, name, age): myobject.name = name myobject.age = age def myfunc(abc): print("안녕하세요 제 이름은 " + abc.name + " 입니다") p1 = Person("길동", 36) p1.myfunc() |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 객체 속성 수정
다음과 같이 객체의 속성을 수정할 수 있다:
p1의 나이를 40세로 설정한다:
class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(self): print("안녕하세요 제 이름은 " + self.name + " 입니다") p1 = Person("길동", 36) p1.age = 40 print("p1.age : ", p1.age) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 객체 속성 삭제
del 키워드를 사용하여 개체의 속성을 삭제할 수 있다:
class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(self): print("안녕하세요 제 이름은 " + self.name + " 입니다") p1 = Person("John", 36) del p1.age print(p1.age) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 객체 삭제
del 키워드를 사용하여 개체를 삭제할 수 있다:
p1 개체를 삭제한다:
class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(self): print("안녕하세요 제 이름은 " + self.name + " 입니다") p1 = Person("길동", 36) del p1 print(p1) |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 객체 pass 구문
클래스 정의는 비워 둘 수 없지만 어떤 이유로 내용이 없는 클래스 정의를 가진 경우 오류가 발생하지 않도록 pass 문을 입력합니다.
class Person: pass |
지금까지 파이썬에서 클래스와 객체에 대해서 살펴보았다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 이터레이터(iterators) (1) | 2023.11.16 |
---|---|
파이썬 클래스 상속(python class inheritance) (1) | 2023.11.15 |
파이썬 배열 (Python Arrays) (0) | 2023.11.13 |
파이썬 람다함수 - Lambda functions (1) | 2023.11.12 |
파이썬 함수(functions) (0) | 2023.11.11 |
댓글