PYTHON_Class(Property)

호기심많은아저씨 ㅣ 2023. 2. 7. 10:20

Python의 클래스와 객체

- public , protected, private  :  키워드는 없으나 개념은 존재한다.

- 속성(property)

 

s 라는 객체는 Person() 의 멤버변수가 name밖에 없기 때문에 print시 name만 출력이 된다.

 

:: 클래스의 속성(property)이라면 멤버변수를 이야기하는데,

self라는 주소에 name이라는 멤버변수를 생성하고, 그 자리에 smith를 입력해 준 것이다.

(Java에서는 주소를 자동으로 생성된다.)

 

s라는 주소의 name이라는 멤버변수에 Scott을 넣어라 라는 명령.

: 객체의 내용이 바뀌었다. = 객체의 내가 변했다.


1. 이미 만들어진 클래스에 속성을 추가로 생성할 수 있다.

 

꼭 필요한 곳에서만 접근할 수 있도록 접근을 제한을 해야한다. - 위의 나온 public,private 등을 설정할 수 있다.

 

name 앞에 _ 을 넣어 _name으로 설정했다.

 

 

객체가 생성된 이후로도 속성을 동적으로 생성해서 만들어 넣을 수 있다.

 

 


멤버변수앞에 __를 추가한다.

 

그리고나서 위의 방법처럼 다시 __name에 scott를 추가한다.

객체가 변하지 않는다. = 언더스코어가 멤버변수앞에 두개가 붙어있으면 초기화가 불가능하다.  

>>>private의 개념이다.

 

__dict__형태로 출력하면,


 

그렇다면 외부접근이 안되는 멤버변수에서, 클래스 내부에서 접근이 가능하게 하는 속성은

@Property이다.

설정을 해두면 Java에서의 getMethod를 설정해둔것과 같다.

 

@name.setter (name이라는 변수명, 다른 변수명을 써두면 된다.) 

설정을 해두면 Java에서의 setMethod를 설정해둔것과 같다.

 

 

즉 private를 설정해둔 뒤, get과 set 메소드를 설정하여 메소드로 멤버변수의 값을 변하게 해준다.


클래스 상속의 개념은 아래와 같다.

Aircraft를 상속한 Fighter를 만든다.

is a relationship

Java에서의 extend를 하지않고 괄호를 해준다.

__가 붙은 것들은 상속이 안되며, 부모에게 되어있는 메소드들을 한번더 정의해주면 override개념이 된다.

 

 

'PYTHON' 카테고리의 다른 글

PYTHON_serialize  (0) 2023.02.08
PYTHON_Class(property-method)  (0) 2023.02.07
PYTHON_class_2  (0) 2023.02.06
PYTHON_time  (0) 2023.02.06
PYTHON_sys  (0) 2023.02.06