PYTHON_class_2

호기심많은아저씨 ㅣ 2023. 2. 6. 17:51

파이썬에서 Class와 객체

 

__init__ : Java에서의 생성자와 같은 역할은 한다. 

                초기화 작업을 해주기 때문에 생성자처럼 사용한다.

 

생성자의 첫번째 파라미터는 특별한 의미를 갖는다.

객체가 생성되었을때 객체의 주소가 첫번째 파라미터에 들어간다.

self  -> java로 말하면 this 와 같다.

 

java에서는 this를 파라미터로 선언하지 않고 사용할 수 있지만, Python에서는 선언 해야만이 사용할 수 있다.

 


1. class 생성

- instance 변수들은 __init__안에 들어간다.

- class 변수는 Emp안 , __init__ 바깥에 생성된다. (모두가 공통적으로 들어가야하는 class 변수) 

이 변수의 호출은 class.변수명 으로 호출할 수 있다. 

 


2. emp객체 생성

객체를 생성하는데 new가 없이도 가능하다.

- 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)로 출력해준다.

 

print 로 출력했을 때 __str__이 돌아간 결과

하단의 emp==emp, emp==emp1를 비하는 기준을 empno로 두기 때문에

dept가 같아도, 달라도 true,false값은 empno로 정해진다.

 


emp_list에 값을 넣고 출력하기


- 인스턴스 변수를 통해 클래스 변수의 값을 읽어올 수는 있다.

 

 

 

- 그러나 인스턴스변수의 참조를 통해서는 클래스 변수를 변하게 할 수는 없다.

 

 

이 객체의 참조를 갖고 company를 요정마을로 할당했다. 

객체에 점을 찍고 아무변수명이나 입력을해도 다 값이 들어간다.

(없으면 그 때 새로생성된다. = 그래서 에러가 발생하지 않는다.)

 

인스턴스 변수로 생성된 emp.company

 

이를 알 수 있는 방법을 아래에 설명한다.

 

객체기준의 instance변수들

 

class기준의 변수집합

 

 


class 변수 조작

self 는 객체 내부에 있는 속성을 다룰때는 self (참조) 로 변하게 한다.

 

class 내부에 있는 속성을 다룰때는 클래스 참조로 변하게 해야한다.

cls(class)의 참조는 cls의 이름과 같다.

Emp에 set_company로 class변수를 변경


 모듈 안에 클래스가 선언된 경우, 그 클래스의 인스턴스 생성은?
 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