파이썬에서 Class와 객체
__init__ : Java에서의 생성자와 같은 역할은 한다.
초기화 작업을 해주기 때문에 생성자처럼 사용한다.
생성자의 첫번째 파라미터는 특별한 의미를 갖는다.
객체가 생성되었을때 객체의 주소가 첫번째 파라미터에 들어간다.
self -> java로 말하면 this 와 같다.
java에서는 this를 파라미터로 선언하지 않고 사용할 수 있지만, Python에서는 선언 해야만이 사용할 수 있다.
1. class 생성
- instance 변수들은 __init__안에 들어간다.
- class 변수는 Emp안 , __init__ 바깥에 생성된다. (모두가 공통적으로 들어가야하는 class 변수)
이 변수의 호출은 class.변수명 으로 호출할 수 있다.
2. emp객체 생성
- 11, "Dennis",20 : 각 instance가 생성된다. 이 객체의 주소가 위 class설정의 self 로 저장된다.
- 먼저 Emp객체의 주소가 생성되어서 self 저장된다.
- 그다음에 따라오는 값들이 그 다음의 속성으로 저장된다.
3. __str__(self) : java의 toString과 대치되는 개념이다.
4. __eq__(self,other) : 객체간의 비교를 할때 java의 equals override처럼 사용한다.
위의 예제로 설명한다면 두 객체의 empno로 ==값을 결정한다.
--모두다 self가 있어야한다.
class 사용하는 예
emp의 주소는 emp그대로 출력하거나, display(emp)를 호출한다.
그 안의 정보를 str로 출력하려면 print(emp)로 출력해준다.
하단의 emp==emp, emp==emp1를 비하는 기준을 empno로 두기 때문에
dept가 같아도, 달라도 true,false값은 empno로 정해진다.
emp_list에 값을 넣고 출력하기
- 인스턴스 변수를 통해 클래스 변수의 값을 읽어올 수는 있다.
- 그러나 인스턴스변수의 참조를 통해서는 클래스 변수를 변하게 할 수는 없다.
이 객체의 참조를 갖고 company를 요정마을로 할당했다.
객체에 점을 찍고 아무변수명이나 입력을해도 다 값이 들어간다.
(없으면 그 때 새로생성된다. = 그래서 에러가 발생하지 않는다.)
이를 알 수 있는 방법을 아래에 설명한다.
class 변수 조작
self 는 객체 내부에 있는 속성을 다룰때는 self (참조) 로 변하게 한다.
class 내부에 있는 속성을 다룰때는 클래스 참조로 변하게 해야한다.
cls(class)의 참조는 cls의 이름과 같다.
모듈 안에 클래스가 선언된 경우, 그 클래스의 인스턴스 생성은?
mycom.py 모듈 안에 Emp 클래스가 선언된 경우
'PYTHON' 카테고리의 다른 글
PYTHON_Class(property-method) (0) | 2023.02.07 |
---|---|
PYTHON_Class(Property) (0) | 2023.02.07 |
PYTHON_time (0) | 2023.02.06 |
PYTHON_sys (0) | 2023.02.06 |
PYTHON_OS (0) | 2023.02.06 |