기타/Python

250616_파이썬 내장함수, 클래스(추상클래스 등)

baektree 2025. 6. 16. 21:23

요약/나만의 인사이트

  • range(시작숫자, 종료숫자, step)
    • range(3, 6)은 3부터 6직전까지의 숫자들의 컬렉션이다. 3, 4, 5
    • range도 iterable(반복가능한) 타입이다. 즉 순차적으로 접근 가능한 객체를 말한다. 참고로 iterable한 타입은 list, tuple, dictionary, string, range 등이 있다.
    • 다만 range의 값을 확인하기 위해서 다른 순서 있는 컬렉션으로 변환해야 한다. list(range(5, 10)) >> [5, 6, 7, 8, 9]
  • if a > b: a, b = b, a
    • a > b 이면 a에는 b를 b에는 a를 담아라
  • list.sort() vs sorted()
    • list.sort() : list 객체 자체를 정렬해주는 함수, 리스트에서만 사용 가능
      • list.sort(reverse=False) _ 오름차순 정렬 _ 기본
      • list.sort(reverse=True) _ 내림차순 정렬
    • sorted() : 파이썬 내장함수, 정렬해서 새로운 변수에 반환
    a = [1, 4, 2, 6, 1, 9, 10]
    
    ##list.sort() -- 리스트 매써드
    #리스트 오름차순 정렬
    a.sort()
    print(a) # [1, 1, 2, 4, 6, 9, 10]
    
    #리스트 내림차순 정렬
    a.sort(reverse=True)
    print(a) # [10, 9, 6, 4, 2, 1, 1]
    
    b = ["apple", "banana", "pineaopple", "orange", "oil"]
    ## sorted() -- 파이썬 내장 함수
    #알파벳 기준, 오름차순 정렬한 리스트 반환하기
    new_b = sorted(b)
    print(new_b) # ['apple', 'banana', 'oil', 'orange', 'pineaopple']
    
    #알파벳 기준, 내림차순 정렬한 리스트 반환하기
    new_b = sorted(b, reverse=True)
    print(new_b) # ['pineaopple', 'orange', 'oil', 'banana', 'apple']
    
  • join() : 문자열 데이터를 이어붙이기, 단 문자열은 반복가능한 객체(리스트, 튜플 등)에 담겨 있으면 됨.
    • join 함수 : 문자열들의 리스트(또는 튜플, 제너레이터 등 반복 가능한 객체)를 합칠 때 사용
    • split : 문자열 > 리스트
    • join : 리스트 > 문자열
    my_list = ["Nice", "to", "meet", "you"]
    
    #공백으로 합치기
    str1 =''.join(my_list)
    print(str1) # Nicetomeetyou
    
    #/로 합치기
    str2 ='/'.join(my_list) # Nice/to/meet/you
    print(str2)
    
    #한칸 띄어쓰기로 합치기
    str3 =' '.join(my_list) # Nice to meet you
    print(str3)
    
    #정수로 이뤄진 튜플 >  하나씩 꺼내서  > 문자로 바꾸고 > 합치기
    #마지막으로 int로 바꾸기 
    my_tuple = (1, 2, 3, 4, 5)
    my_tuple = ''.join(str(x) for x in my_tuple)
    print(type(my_tuple))
    print(int(my_tuple))
    
    # map을 활용해 튜플안의 정수를 문자열 바꿀 수 있음.
    my_tuple = (1, 2, 3, 4, 5)
    my_tuple = ''.join(map(str, my_tuple)) #'12345'
    print(type(my_tuple))
    print(int(my_tuple))
    
  • cf 참고로 파이썬 a = 1, 2, 3이라고 하면 자동으로 튜플로 인식됨.(파이썬에서 , 자체가 튜플을 만드는 핵심 문법이기에 또한 메모리 활용에 보다 효율적이라서)

새롭게 알게 된 것

  • 추상클래스
    • 사용이유
      • 모양(shape)이라는 개념은 공통적으로 .area()와 같은 메서드를 가지는데 모양마다 넓이 계산 방식이 다르니, 틀만 정해넣고 넓이 계산식을 직접 정의하도록 강제하고 싶을 때 추상 클래스를 활용하나.
    • ABC
      • 추상 클래스의 부모 클래스
      • 내가 만들 클래스가 추상 클래스임을 명시하기 위해 필요
      • class MyClass(ABC): 처럼 상속해서 사용한다.
    • abstractmethond
      • 서브클래스가 반드시 재정의 해야 할 매서드를 정의할 때 사용
      • 이걸 써야 “자식 클래스야, 이 메서드는 꼭 만들어!”라고 강제할 수 있다.
  • 프로퍼티
    • 정의
      • 매서드를 속성처럼 사용할 수 있게 만든 것
    • 코드
    class Person:
    	def __init__(sefl, birth_year):
    			self.birth_year = birth_year
    		
    	@property #getter 값 가져오기
    	def age(self)
    			return 2025 - self.birth_year
    	
    	@age.setter # setter 값 셋팅하기
    	def age(self, new_age):
    			self.birth_year = 2025 - new_age
    
    joy = Person(2000)
    print(joy.age) #25 , age는 매서드이지만 속성값처럼 접근 가능
    
    joy.age = 30
    joy.brith_year = 1995
    # joy.birth_year = 1995 # 이렇게 내부에 있는 변수를 직접 수정 -> 위험 / 우회해서 내부 변수에 접근할 수 있게
    
    
    • 특징
      • 매서드를 속성처럼 사용할 수 있게 해주는 기능이다. obj.age() → obj.age
      • 이를통해 getter, setter, deleter 기능을 구현할 수 있다.
      • getter 매써드를 속성처럼 사용해서 값을 불러올 수 있다. print(obj.age) = 25
      • setter 매서드를 속성처럼 사용해서 값을 넣을 수 있다. obj.age = 30

특히 어려웠던 것

- 그냥 다 어렵다.

다음에 적용해 볼 것

- 판다스를 통한 전처리,, 차근차근 가즈아~!