Class_Python

miin·2021년 6월 28일
0

Python

목록 보기
6/10

메소드: 클래스 안에 있는 함수
상속: 원래 만들어진 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이 namemain일 때만 실행됨
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
../이전폴더

0개의 댓글