cs

5월 정말 혼자 많이 힘들었드아...

정말 오랜만에 다시 글쓴다...

 

매일 변명의 연속이지만, 진짜 정신없는 5월.

 

근데 뭐 했다고 벌써 일년의 반이 날라가고있지?!

 

아니, 그래도 반이 남았어!!

 

털어내고 빨리 이겨내봅시다..!! 

 


클래스 변수와 메소드 

지난번에 한걸 다시 보고, 복기 한번 해주고해야한다. 

너무 오랜만에 봤어 ㅠ

 

인스턴스가 속성과 기능을 가질 수 있지만, 클래스가 변수와 함수를 가질 수 있다고 한다. 

 

클래스 변수 만들기 

생각보다 클래스 변수는 구문 아래 바로 변수만 선언 하기만 하면 된다. 

 

변수 만들기

class 클래스 이름:

    클래스 변수 = 값 

 

클래스 변수에 접근하기

클래스 이름 변수 이름 

 

그렇다 이렇게 그냥 뭐 문법보면 알겠냐고, 예제로 바로 넘어간다. 

 

#클래스를 선언하기 

class Student:
    count = 0
    
    def __init__(self, name, korean, math, english, science):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
        self.science = science
        
        #클래스 변수 설정해주는거임 
        Student.count += 1
        print("{}번째 학생이 생성되었습니다.".format(Student.count)) 
        
        
    #학생리스트 선언 필요 
students=[
    Student("A", 90, 92, 94, 83),
    Student("B", 89, 93, 80, 99),
    Student("C", 100, 99, 93, 86)
]

print()
print("현재 생성된 총 학생 수는 {}명입니다.".format(Student.count)) # 클래스 내부 외부에서 접근?할때는 (클래스이름.변수이름)을 사용한다

일반적으로 변수를 만드나 함수를 만드나 큰 차이는 없는데, 클래스가 가진 기능을 명시적으로 나타내서 변수를 만드는 것이 포인트라고 한다.

 

뭐 코드는 아직 초보자이지만, 이런 기능 썻던 경우는 크롤링할때 사용했다. 

 

카테고리별로 크롤링을 할때 중간중간 잘 되고있는지 확인하기 위해서 체크하는 형식으로 중간에 저런 변수를 넣어줬었는데, 확실히 효과있다. 

 

잘 돌아가는지 내가 보고 확인 할 수 있기때문에, 양이 정말 많고 오래걸리는 작업일땐 항상 변수설정 해서 체크하는걸 하면 좋다. 

 

클래스 함수

클래스 함수도 뭐 변수랑 크게 다른건 없어보인다. 

 

하지만 생성하는 방식이 좀 특이하다고 하는데, @classmethod부분을 데코레이터라고 부른다.

 

@로 시작하는걸 파이썬에서는 '데코레이터'라고 하고, 말 그대로 꾸며주는 기능을 가지고 있다. 

 

## 문법을 보면 이런 느낌인데,,
class 클래스이름:
    @classmethod
    def 클래스 함수(cls, 매개변수):
    	pass

(예제를 가지고 와라)

 

 

#클래스를 선언하기 

class Student:
    count = 0
    students=[]
    
    @classmethod
    def print(cls):
        print("---------student list---------")
        print("이름\t총점\t평균")
        for student in cls.students: #student.student랑 같은 의미이면서 여기서는 매개변수로 받은 cls를 활용한다 
            print(str(student))
        print("------------------------------")
        
        
    #인스턴스 함수 
    def __init__(self, name, korean, math, english, science):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
        self.science = science
        
        #클래스 변수 설정해주는거임 
        Student.count += 1
        Student.students.append(self)
        
    def get_sum(self): #합산 함수
        return self.korean+self.math+self.english+self.science
    
    def get_average(self): #평균 함수 
        return self.get_sum() / 4
    
    def __str__(self): ## 여기서 __str__ 라는 이름으로 함수를 선언
        return "{}\t{}\t{}".format(
        self.name,
        self.get_sum(),
        self.get_average())
        
#학생리스트 선언 필요 
Student("A", 90, 92, 94, 83)
Student("B", 89, 93, 80, 99)
Student("C", 100, 99, 93, 86)


Student.print()

결과 너무 깔끔...

 


 

이게 마지막 내용은 아니고 챕터 마지막 부분에 가비지 컬렉터, 프라이빗 변수와 게터/세터, 그리고 상속이라는 내용이 나온다.

 

해당 내용들은 지금 당장 다루지 않고 넘어갈 것이다. 

 

이유는, 내가 바로 필요로 하지 않은 것도 있고, 바로 따라하기에는 내용을 정확하게 필요성을 못 느끼고 코드만 그냥 복붙하는 느낌이 올까봐다. 

 

회사에서 정말 파이썬 많이 붙잡고있는데, 문법이랑 기본적인 틀을 알고싶어서 한 것도 있고, 지금 직무에는 살짝 거리가 있는? 하지만 필요한 그런 느낌으로 책을 시작했고, 엄청 많이 배웠다.

 

위에서 코드 날린거들은 다 내가 경험을 잠시나마, 혹은 필요로해서 잠시라도 보고 이해를 했으니 열심히 따라했는데, 저 뒤는 아직은 아니다. (개발자 지인님들이 조언을 해주시기도 했고)

 

혼공파책은 이제 잠시? 끝이지만, 나중에 분명 다시 펼쳐서 볼게 뻔하당. 

 

이제 정말정말 해보고싶은 책으로 다시 공부해야지. 

(ML, 데이터 분석 가즈아가자)

'Data Analysis > Python_Grammar' 카테고리의 다른 글

[혼공파] 클래스의 추가적인 구문 1  (0) 2022.05.05
[혼공파] 클래스의 기본  (0) 2022.04.16
[혼공파] 외부 모듈  (0) 2022.03.27
[혼공파] 표준 모듈  (0) 2022.03.25
[혼공파] 예외 고급  (0) 2022.03.20

+ Recent posts