반응형
+클래스
class 클래스명:
def __init__(self, 파라미터,...):
...
def 메서드1(self, 파라미터,...):
...
__init__ ; 생성자
__del__ ; 소멸자
class Man:
def __init__(self, name):
self.params={}
self.name=name
print("aa")
def hi(self):
print("hi "+self.name+"!")
def setAge(self, a):
self.params['age']=a
def __del__(self):
pass
m=Man("jj") # 생성자 호출!
m.hi()
del m # m객체 소멸. 소멸자 호출!
-------------------------------------------------------------------------
class SumClass:
def __init__(self, name): // constructor
self.name=name
def sum(self, a, b ): // 첫번째 인자는 self로 해야 한다.
result=a+b
a = SumClass("jane')
a.sum(1,2)
-------------------------------------------------------------------------------
class Fib:
'''iterator that yields numbers in the fibonacci sequence'''
def __int__(self, max):
self.max = max # instance에서의 global 변수. self.*
def __iter__(self):
self.a=0
self.b=1
return self
def __next__(self):
fib = self.a
if fib > self.max:
raise StopIteration
self.a, self.b = self.b, self.a+self.b
return fib
빈 클래스 정의시, 문법적 오류를 피하기 위해 내용에 pass 라고 쓴다. 나중에 작업할 때 사용.
class PapayaWhip:
pass
+클래스의 객체 생성 ; 클래스명(constructor)으로 함수 호출처럼 한다.
f = Fib(100)
for i in f :
print( i, end=“ “)
에러없이 마지막까지 출력된다.
+ 클래스 상속 ; 클래스 선언시 뒤에 (parent) 를 추가한다.
class B(A):
pass
A클래스로부터 상속받는다.
ex)
class Person:
def __init__(self, name, age, gender):
self.Name = name
self.Age= age
self.Gender = gender
def aboutme(self):
pass
class Employee(Person):
def __init__(self, name, age, gender, salary):
super().__init__(self, name, age, gender) # Person._init__(..)을 사용해도 되나, 다중상속시 중복실행되는 것을 막기위해 super를 사용한다.
self.Salary=salary
def work(self):
pass
+ 다중 상속도 지원한다.
class Child(ParentOne, ParentTwo):
..
+ 연산자 오버로딩
아래와 같이 미리 정의된 함수를 중복 정의하여 사용한다.
__add__(self, other)
__mul__(self, other)
__sub__(self, other)
...
피연산자의 순서가 뒤바뀐 경우도 지원하려면?
함수이름에 r을 붙인 것을 정의한다.
__add__=__radd__
__sub__=__rsub__
__mul__=__rmul__
n=numbox(100)
n+100
100+n
+ 클래스 메소드 class method ; 첫 번째 인자가 cls 로 클래스를 의미.
@classmethod
def change_raise_amount(cls, rate):
cls.raise_rate=rate
+static method ; cls 객체가 없다.
@staticmethod
def is_work_day(day):
return True
'Python' 카테고리의 다른 글
Python JSON 사용하기 (0) | 2018.04.10 |
---|---|
Python 외부 모듈사용.time,string,random, try except (0) | 2018.04.09 |
Python 강좌6 tuple, set, dictionary (0) | 2018.03.21 |
Python 강좌5 List (0) | 2018.03.20 |
Python 강좌4 정규식 regular expression (0) | 2018.03.19 |