본문 바로가기
개발일지/Python

Python class2

by 개발에정착하고싶다 2022. 9. 28.
320x100
# OOP - 객체 지향 프로그래밍 Object Oriented Programming
# 예외적으로 class는 카멜기입법만 허용한다. - 스네이크는 number_of 이런식으로 가고 카멜은 NumberOf이런 식으로 전개
class NameOfClass():
    
    # __init__은 초기화 함수다. 예를들어 이게 없으면 첫번째 사용땐 문제가 없는데
    # 두번째 사용부턴 처음에 정의된 값으로 진행된다더라
    def __init__(self,param1, param2):
        self.param1 = param1
        self.param2 = param2

    # 클래스 안의 정의함수는 함수라고 하지 않고 '메서드'라고 부른다고 한다.
    def some_method(self):
        # perform some action
        print(self.param1)

class Circle():

    pi = 3.14
    
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return self.radius * self.radius* self.pi

    def perimeter(self):
        # Cricle.pi나 self.pi나 해당 클래스에선 같은 의미다.
        return 2 * self.radius * Circle.pi

    def double_radius(self):
        self.radius = self.radius * 2
        print(f'Radius has been doubled to {self.radius}')

mycircle = Circle(4)
print(mycircle.area)
# <bound method Circle.area of <__main__.Circle object at 0x7fe2f00c9340>>
# 때문에 여기서 area를 출력하고 싶으면 area()라고 해줘야한다.
print(mycircle.area())
print(mycircle.perimeter())
mycircle.double_radius()
300x250