Object Oriented Programming (OOP) : 객체 조립하여 전체 프로그램을 만드는 것이다.
class 클래스명 [(상속클래스)]:
클래스 변수(field)
def 클래스 함수(self[매개변수1, 매개변수3,...]): ==> self는 무조껀 써줘야함.
실행문
# field 도 method도 없는 class 생성
class SampleClass:
pass
# 객체로써 class 접근
# sampleclass() : 클래스명과 동일한 이름의 함수 -> 생성자
a = SampleClass()
a.var = 100
print(a.var)
#result
## 100
class SampleClass2:
var = "python"
# self는 자신이 속해있는 class를 가르킴
# self는 항상 바뀔 수 있다.
# 첫번째 파라미터는 무조건 해당 클래스를 가리키는 인스턴스로 할당을 해버림
def printData(s):
print(s.var)
a2 = SampleClass2()
a2.printData()
#result
## python
class SampleClass5:
__name1 = "홍길동"
name2 = "이순신"
sc5 = SampleClass5()
# print(sc5.name1) ==> error
print(sc5.name2)
#reuslt
## 이순신
class SampleClass5:
__name1 = "홍길동"
name2 = "이순신"
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
st5 = SampleClass5()
# st5.getName() ==> Attribut error
st5.setName("마당쇠")
st5.getName()
class SampleClass5:
__name = "홍길동"
# 생성자
def __init__(self,name,age):
self.__name = name
self.__age = age
def getName(self):
return self.__name
#st5 = SampleClass5() == > error 발생
java의 사용자정의 생성자 처럼 반드시 __init__으로 지정된 매개변수들은 객체 생성당시 반드시 명시되어있어야 한다.
생성자를 이용하여 setter 대신 사용가능 하지만 data가 굉장히 많다면 setter를 사용하지만 그렇지 않다면 constructor를 사용한다.
def __main__ : main 함수도 이런식으로 쓰인다.