class란?
object 란?
class 선언하기
class Person :
pass
bob = Person()
cathy = Person()
a = list()
b = list()
print(type(bob), type(cathy))
print(type(a), type(b))
<class '__main__.Person'> <class '__main__.Person'>
<class 'list'> <class 'list'>
init (self)
class Person:
def __init__(self):
self.name = 'Bob'
self.age = 10
p1 = Person()
print(p1.name, p1.age)
p1.name = 'Kate'
p1.age = 20
print(p1.name, p1.age)
Bob 10
Kate 20
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person('Lady', 24)
print(p1.name, p1.age)
Lady 24
class Person:
def __init__(self, name, age = 30):
self.name = name
self.age = age
p1 = Person('Lady')
print(p1.name, p1.age)
Lady 30
mehtod 정의
class Counter:
def __init__(self):
self.num = 0
def increment(self):
self.num += 1
def reset(self):
self.num = 0
def current_vlaue_print(self):
print('current valuie : ', self.num)
c1 = Counter()
c1.current_vlaue_print()
c1.increment()
c1.increment()
c1.current_vlaue_print()
c1.reset()
c1.current_vlaue_print()
current valuie : 0
current valuie : 2
current valuie : 0
Class Inheritance (상속)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, minute):
print('{}은 {}시간 잡니다.'.format(self.name, minute))
def work(self, minute):
print('{}은 {}시간 일합니다.'.format(self.name, minute))
class Student(Person):
def __init__(self, name, age):
self.name = name
self.age = age
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
bob = Student('Bob', 20)
bob.eat('BBQ')
bob.sleep(6)
bob.work(5)
cathy = Employee('Cathy', 30)
cathy.eat('BBQ')
cathy.sleep(6)
cathy.work(5)
Bob은 BBQ를 먹습니다.
Bob은 6시간 잡니다.
Bob은 5시간 일합니다.
Cathy은 BBQ를 먹습니다.
Cathy은 6시간 잡니다.
Cathy은 5시간 일합니다.
method override
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, minute):
print('{}은 {}시간 잡니다.'.format(self.name, minute))
def work(self, minute):
print('{}은 {}시간 일합니다.'.format(self.name, minute))
class Student(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}시간 공부합니다.'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
bob = Student('Bob', 20)
bob.eat('BBQ')
bob.sleep(6)
bob.work(5)
cathy = Employee('Cathy', 30)
cathy.eat('BBQ')
cathy.sleep(6)
cathy.work(5)
Bob은 BBQ를 먹습니다.
Bob은 6시간 잡니다.
Bob은 5시간 공부합니다.
Cathy은 BBQ를 먹습니다.
Cathy은 6시간 잡니다.
Cathy은 5시간 일합니다.
super
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, minute):
print('{}은 {}시간 잡니다.'.format(self.name, minute))
def work(self, minute):
print('{}은 {}시간 일합니다.'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
super().work(minute)
print('{}은 {}시간 업무를 합니다.'.format(self.name, minute))
cathy = Employee('Cathy', 30)
cathy.eat('BBQ')
cathy.sleep(6)
cathy.work(5)
Cathy은 BBQ를 먹습니다.
Cathy은 6시간 잡니다.
Cathy은 5시간 일합니다.
Cathy은 5시간 업무를 합니다.
self
method type
# class method
class Math:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
Math.add(10, 20)
Math.multiply(10, 20)
30
200
special method
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, pt):
new_x = self.x + pt.x
new_y = self.y + pt.y
return Point(new_x, new_y)
def __sub__(self, pt):
new_x = self.x - pt.x
new_y = self.y - pt.y
return Point(new_x, new_y)
def __mul__(self, factor):
return Point(self.x * factor, self.y * factor)
def __getitem__(self, index):
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
def get_y(self):
return self.y
def __len__(self):
return self.x ** 2 + self.y ** 2
def __str__(self):
return '({}, {})'.format(self.x, self.y)
p1 = Point(1, 3)
p2 = Point(3, 5)
p3 = p1 + p2
p4 = p1 - p2
p5 = p1 * 3
print(p1[0])
print(len(p1))
print(p1)
print(p2)
print(p3)
print(p4)
print(p5)
1
10
(1, 3)
(3, 5)
(4, 8)
(-2, -2)
(3, 9)
#정규표현식과 re모듈의 사용 (0) | 2022.07.06 |
---|---|
#모듈 이해 및 사용 (0) | 2022.06.29 |
#함수 이해 및 활용 - 2 (0) | 2022.06.29 |
#함수 이해 및 활용 - 1 (0) | 2022.06.22 |
#조건문과 반복문 - 3 (0) | 2022.06.20 |