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 |