메소드: 클래스 안에 있는 함수
상속: 원래 만들어진 class에 덧붙여서 쓰는 것을 의미, 중복이 없음, 기존기능 재사용
부모 class, 자식 class
오버라이딩: 부모의 메소드를 자식메소드로 덮어 변경하는것
모듈: 미리 만들어놓은 파이썬 파일(함수, 변수, 클래스)을 가져다 쓰는것(import)
패키지: 모듈 여러개 모아놓은것
기반클래스: 기능을 물려주는 클래스, 부모클래스/슈퍼클래스 라고도 부름
파생클래스: 상속을 받아 새롭게 만드는 클래스, 자식클래스/서브클래스 라고도 부름
인스턴스(클래스와 연관지어 얘기할때) = 객체(그냥 객체만 지칭할때)
공통으로 사용할때 = 클래스
각각 사용할때 = 객체변수
클래스를 쓰는 방법
메소드의 첫번째 매개변수가 (self) 여야 함
내용이 없는 빈 클래스를 만들때는 코드부분에 pass를 넣어준다
Class 대문자로 시작하는 클래스명 작성:
def 메소드(self):
...
__init__
시작하다는 의미
객체 생성할때 사용하는 함수
class JSS:
def init(self, 메소드):
self. 메소드 = 값
def show(self):
print('show 실행')
a = JSS() #init만 호출됨
a.show() #show가 호출됨
#게임캐릭터 클래스 만들기
class Knight:
def init(self, health, mana, armor):
self.health = health
self.mana = mana
self.armor = armor
def slash(self):
print('배기')
x = Knight(health = 542.4, mana = 210.3, armor = 38)
print(x.health, x.mana, x.armor)
x.slash()
변수앞에 __가 쓰이면 변경할 수 없음
pow(): ** 제곱
self.메소드() 메소드 안에 메소드 호출(self가 없으면 클래스 바깥쪽에 있는 함수를 호출)
this. = self.
인스턴스 = 클래스()
인스턴스.메서드()
isinstance(인스턴스, 클래스)
현재 인스턴스가 특정 클래스의 인스턴스인지 확인 True or False로 반환
주로 자료형 판단할때 사용
def factoral(n):
if not isinstane(n, int) or n < 0: #n이 정수가 아니거나 음수이면 None을 출력
return None
del 삭제
repr 프린팅
add 덧셈
cmp 비교
ex)
def cmp(self, other):
if self.area < other.area:
return -1
elif self.area == other.area:
return 0
else :
return 1
비공개 속성
속성(변수)앞에 ''를 붙이는 것
클래스 바깥에서 비공개 속성에 접근하면 에러발생, 비공개는 해당 클래스 안에서만 사용가능
self.name = name
부모클래스 가져오는법
class 자식클래스명(부모클래스명):
def
@staticmethod 정적메서드, 데코레이터
메소드(함수)에 추가기능을 구현할 때 사용
인스턴스 속성에는 접근할 수 없음
인스턴스 속성,인스턴스 메소드가 필요없을때 사용
class 클래스명:
@staticmethod
def 메서드(매개변수1, 매개변수2):
실행코드...
ex) class Person:
def greeting(self):
print('안녕')
class Student(Person):
def study(self):
print('공부')
james = Studenst()
james.greetinge()
james.study()
출력-> 안녕
공부
ex)
class Calc:
@staticmethod
def add(a, b):
print(a + b)
@staticmethod
def mul(a, b):
print(a * b)
Calc.add(10, 20)
Calc.mul(10, 20)
@classmethod
첫번째 메소드에 cls를 지정해야한다
class 클래스명:
@classmethod
def method(cls, 매개변수1,매개변수2):
실행코드,,
ex)
class Person:
count = 0
object class에 정의된 메소드(특수메소드)
new() 객체가 생성될때 자동으로 호출됨,init 보다 먼저 호출됨
init() 아무런 인스턴스도 반환하지 않으며, 객체 생성후 초기화에 관련된 일을 한다
str()
eq() 두 객체가 서로 동일하다면 True를 반환
모듈
import mod1(다른파일이름) #mod1이라는 파일 자체를 가져올때
print(mod1.add(1,2))
from mod1 import add #mod1에 있는 무수한 함수중에 add라는 함수만 가져올때
print(add)
if name == "main": mod1이 name이 main일 때만 실행됨
print(add(1,4))
같은 경로 안에있으면 import 할 수 있음
그렇지 않으면 path에 추가해야함/ 또는 에러(no module named 'mod1')나면 추가
path에 추가하기(맨위)
import sys
sys.path.append("c:\jocoding\subFolder")
package
game package ex)
game/
init.py #패키지관련 설정하는것
sound/ #폴더
init.py
echo.py
graphic/ #폴더
init.py
render.py
패키지안의 함수 실행하기
from game.sound.echo import echo_test
echo_test()
(.이 안에있다는 의미,
game 패키지 안에 sound폴더안에 echo에 echo_test라는 함수만 불러옴)
all 모두 불러오기
를 쓰려면 해당 파일에 가서 all = ['','',''가져올 파일 이름] 기재하고
import *
relative package
../이전폴더