반응형
1. 클래스
- class
- 클래스 내부에 정의된 함수인 메서드의 첫번째 인자는 반드시 self 이어야 한다. ( 그냥 외울 것 )
# class 선언
class Test :
def set_test(self, name, msg) :
self.name = name
self.msg = msg
def print_test(self) :
print("------------------------")
print("name : ", self.name)
print("msg : ", self.msg)
print("------------------------")
# 인스턴스 생성
test01 = Test()
test01
type(test01)
test01.set_test("홍길동", "안녕하세요")
test01.name
test01.msg
test01.print_test()
- 생성자
- 인스턴스 생성과 동시에 자동으로 호출되는 메서드인 생성자가 존재( 객체지향 프로그래밍 언어에도 있는 개념 )
- __init__(self)와 같은 이름의 메서드
- 파이썬 클래스에서 __ 로 시작하는 함수는 모두 특별한 메서드를 의미
# init - initialize 초기화하다
class MyTest :
def __init__(self) :
print( "객체가 생성되었습니다" )
myTest = MyTest()
# init - initialize 초기화하다
class MyTest :
def __init__(self, name, msg) :
self.name = name
self.msg = msg
def print_test(self) :
print("------------------------")
print("name : ", self.name)
print("msg : ", self.msg)
print("------------------------")
myTest = MyTest("방실이", "안녕하세요")
myTest.print_test()
- self
- 클래스 인스턴스
class Foo :
def function01(self) :
print("function01" , id(self))
def function02() :
print("function02")
foo = Foo()
foo.function01()
# self 인자는 파이썬이 자동으로 넘겨준다.
foo.function02()
# TypeError: function02() takes 0 positional arguments but 1 was given
id(foo)
# foo.function01() 의 id(self) 와 동일하다.
Foo.function01()
# TypeError: function01() missing 1 required positional argument: 'self'
foo1 = Foo()
Foo.function01(foo1)
# function01 2861741202248
id(foo1)
# 2861741202248
- 클래스 네임스페이스
- 변수가 객체를 바인딩할 때 그 둘 사이의 관계를 저장하고 있는 공간
class Test :
name = "홍길동"
# 네임스페이스 확인
dir()
# Test 클래스 네임스페이스
Test.__dict__
# 별도의 인스턴스 생성
t01 = Test()
t02 = Test()
t01.name = "방실이"
Test.name
t01.name
t02.name
- 클래스 변수와 인스턴스 변수
class Vari :
# 클래스 변수
num = 0
def __init__(self, name) :
# 인스턴스 변수
self.name = name
Vari.num += 1
def __del__(self) :
Vari.num -= 1
# 두개의 개별 인스턴스
kim = Vari("kim")
park = Vari("Park")
kim.name
park.name
# 두개의 개별 인스턴지만, num 클래스 변수이다.
kim.num
park.num
- 클래스 상속
class Parent :
def hello(self) :
print("parent hello")
par = Parent()
par.hello()
class Child(Parent) :
def msg(self) :
print("child msg~~~")
child1 = Child()
child1.hello()
child1.msg()
반응형
'IT > Python' 카테고리의 다른 글
Python PyQt5 QAxContainer import 에러 (0) | 2020.05.18 |
---|---|
Python / GUI (0) | 2020.05.14 |
Python / COM (0) | 2020.05.13 |
7. Python IDE (0) | 2020.02.07 |
6. Python 파일읽기 / 쓰기 (0) | 2020.02.05 |
4. Python 함수와 모듈 (0) | 2020.02.04 |
3. Python 제어문 (0) | 2020.01.29 |
2. Python 기본자료구조(리스트/튜플/딕셔너리) (0) | 2020.01.20 |
1. Python 변수/문자열/기본데이터타입 (0) | 2020.01.20 |
Python 시작 (0) | 2020.01.14 |