Class - 클래스
클래스란 객체 지향 프로그래밍 (OOP) 기본 요소 중 하나
- 객체 지향 프로그래밍은 현실 세계의 개념들을 프로그래밍에 반영하여 코드를 구조화 하는 방법을 제공합니다.
클래스는 몇가지 요소를 가지고 있습니다.
- class - 객체의 속성과 메서드를 정의하는데 사용, 객체를 생성하기 위한 틀
- instance - 클래스를 기반으로 생성된 개별 객체
- method - 클래스에 속한 함수로 , 인스턴스에 대해 특정 동작을 수행합니다, 첫번째 매개변수로 self를 사용하여 메서드가 속한 인스턴스에 접근할 수 있습니다.
- 속성(attributes) - 클래스의 인스턴스가 가진 데이터를 의미합니다. 객체의 상태를 나타내며 , 클래스 내부의 변수로 정의됩니다.
클래스 기본적 사용법
class 클래스 이름:
def __init__(self):
인스턴스 속성1
인스턴스 속성2
def 메서드1(self):
내용 삽입
def 메서드2(self):
내용 삽입
my_instance = 클래스 이름(인스턴스 속성1, 인스턴스 속성2)
예제 1. 클래스 생성 - 버스
class Bus:
wheels = 4
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
Bus.wheels += 1
def bus_info(self):
return f'{self.make} 에서 만들었고 , 모델 이름은 : {self.model} 이며 , {self.year} 출시되었습니다. '
my_Bus = Bus("Jogogo", "D22", '2023')
my_Bus2 = Bus("cia","T88",'2022')
클래스의 속성에 접근하기
클래스의 변수는 직접 접근이 가능함
print(Bus.wheels)
클래스의 속성은 모두가 공유합니다.
print(Bus.__init__)
객체의 속성에 접근하기
print(my_Bus.make)
print(my_Bus.model)
print(my_Bus.year)
클래스의 속성 비교
print(my_Bus.make == my_Bus.year)
id값으로 속성을 확인
인스턴스의 변수는 객마다 별도로 존재한다라는 것을 확인할수 있다.
print(id(my_Bus.make))
print(id(my_Bus.model))
인스턴스 속성확인
print(f'{my_Bus.make} : 만든 회사 , {my_Bus.model} : 모델 이름 , {my_Bus.year} : 제조생성 날짜')
if 문 활용해서 비교 후 확인
if my_Bus.make == 'Jogogo':
print('조고고 제조품이 맞습니다.')
else:
print('다른 회사의 것 입니다.')
인스턴스를 변경시켜서 메서드 호출
info = my_Bus2.bus_info()
print(info)
인스턴스의 삭제
del my_Bus
print(my_Bus.make)
self 에 대하여
- 클래스의 내에서 사용되는 특별한 첫번째 매개변수
- self 를 통하여 , 객체 내의 속성에 접근하고 , 객체 내의 메서드를 호출할 수 있다.
- self 가 있으면 직접적으로 인스턴스화를 시켜줘야 호출이 가능합니다.
- 위의 예제에서 self는 my_bus 가 self라고 생각하시면 됩니다.
init 메서드에 대하여
- 파이썬에서 특별한 의미를 가지는 메서드 중 하나
- 생성자(constructor) 라고도 불립니다. (생성자 함수)
- 해당 클래스의 객체가 생성될 때 , 자동으로 호출되어 객체의 초기화를 담당
- 객체의 속성을 초기화나 , 다른 설정을 수행하는 역할
- init 메서드를 통해 인스턴스가 생성될 때 초기화, 인스턴스가 생성된 후에도 재정의 될 수 있습니다.
생성자 함수 및 , self에 대해 알아보기
class MyClass:
def __init__(self):
self.my_var = "Hi"
def func1(self):
print(self.my_var)
def func2(self):
self.my_var = "Hello, World!"
self.func1()
def func3():
print('not variable')
my_obj = MyClass()
self 에 의해 변경되는 부분 확인
my_obj.func1()
my_obj.func2()
my_obj.func1()
MyClass.func3()
- self 는 클래스의 메소드에서 현재 객체의 속성이나 다른 메소드를 참조하는데 사용
- 메소드간에 데이터를 공유하거나 메소드를 연결하는 작업이 필요
- 독립적인 공간에 있는 속성값에 접근
예제2. 클래스를 이용해서 url 생성하기
class UrlFilter:
def __init__(self, urls):
self.urls = urls
def add_https(self):
https_urls = []
for url in self.urls:
if not url.startswith('https://'):
if not url.startswith('http://'):
url = 'https://' + url
else:
url = url.replace('http://', 'https://')
https_urls.append(url)
return https_urls
urls = ["google.com", "http://daum.net", "naver.com", "yahoo.com"]
url_filter = UrlFilter(urls)
https_urls = url_filter.add_https()
print(https_urls)