[Python] 클래스
Y
Yerim
- Python
# calculator.py
result = 0
def add(num):
global result
result += num # 결괏값(result)에 입력값(num) 더하기
return result # 결괏값 리턴
print(add(3))
print(add(4))
# calculator2.py
result1 = 0
result2 = 0
def add1(num): # 계산기1
global result1
result1 += num
return result1
def add2(num): # 계산기2
global result2
result2 += num
return result2
print(add1(3))
print(add1(4))
print(add2(3))
print(add2(7))
# calculator3.py
class Calculator:
def __init__(self):
self.result = 0
def add(self, num):
self.result += num
return self.result
cal1 = Calculator()
cal2 = Calculator()
print(cal1.add(3))
print(cal1.add(4))
print(cal2.add(3))
print(cal2.add(7))def 함수_이름(매개변수):
수행할_문장
...class FourCal:
base = 1
def setdata(self, first, second): # 메서드의 매개변수
self.first = first # 메서드의 수행문
self.second = second # 메서드의 수행문
def add(self):
result = self.first + self.second
return result
def div(self):
result = self.first / self.second
return result
a = FourCal() # 객체 생성
a.setdata(4, 2) # first=4, seoncd=2
FourCal.setdata(b, 3, 7) # 메서드 호출 다른 방법
a.add() # 6
a.base # 1class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
...
a = FourCal(4, 2)class Person:
def __init__(self):
self.name = input('이름')
self.age = int(input('나이:'))
def disp(self):
print(self.name + ':' + self.age)
li = []
for i in range(3):
li.append(Person())
for i in li:
i.disp()class 클래스_이름(상속할_클래스_이름)class MoreFourCal(FourCal):
def __init__(self):
super().__init__()
self.third
def pow(self):
result = self.first ** self.second
return result
a = MoreFourCal(4, 2, 5)class Point:
def __init__(self):
self.x = int(input('x='))
self.y = int(input('y='))
def disp(self):
pass
class Rect(Point):
def __init__(self):
super().__init__()
self.w = int(input('w='))
self.h = int(input('h='))
def disp(self):
print('사각형', self.x, self.y, self.w, self.h)
class Circle(Point):
def __init__(self):
super().__init__()
self.r = int(input('r='))
def disp(self):
print('원', self.x, self.y, self.r)
def main():
li = list()
while True:
s = input('1. 사각형, 2. 원, 3. 조회, 4. 종료:')
if s == '1':
li.append(React())
if s == '2':
li.append(Circle())
if s == '3':
for i in li:
i.disp()
if s == '4':
break;class SafeFourCal(FourCal):
def div(self):
if self.second == 0: # 나누는 값이 0인 경우 0을 리턴
return 0
else:
return self.first / self.secondclass Sj:
def __init__(self):
self.kor
self.__eng # 네임 맹글링 적용
obj = MyClass(90, 80)
print(obj.kor) # 정상 출력
# print(obj.__eng) # AttributeError
print(obj._Sj__eng) # 네임 맹글링된 이름으로 접근 가능class MyClass:
count = 0
@classmethod
def increment(cls):
cls.count += 1
MyClass.increment()
print9MyClass.count) # 출력: 1class MyClass:
@staticmethod
def my_method(x, y):
return x + y
print(MyClass.my_method(5, 3)) # 출력: 8class CompletionsList:
def __init__(self):
self.subject_list = []
def show(self):
print(self.subject_list)
def append(Self, subject):
self.subject_list.append(subject)
@staticmethod
def academic_warning(subject):
'''
내부에서 클래스 변수, 인스턴스 변수 수정하는 것이 가능하지 않습니다
'''
return abs(1.5 + subject['grades'])
c = CompletionList()
subject1 = {'name': 'Python', 'grades': 2.5}
subject2 = {'name': 'HTML/CSS', 'grades': 3.5}
c.append(subject1)
c.append(subject2)
c.show()
print(c.academic_warning(subject1))class Person:
def __init__(self first_name, last_name):
self._first_name = first_name
self._last_name = last_name
@property
def full_name(self):
return f"{self._first_name} {self._last_name}"
hojun = Person("lee", "hojun")
hojun._first_name
hojun._last_name
hojun.full_name
hojun.full_name()