10. Python - OOP (객체지향)

2021. 2. 23. 17:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# OOP : 객체 단위로 리얼월드를 표현 -> 유지보수하기 편하도록
#       리얼월드를 표현하는 객체 -> 소스 알아보기 편해짐
#       캡슐화 -> 데이터를 안전하게 처리
#       1 file == 1 class -> 코드 재사용 가능
 
# Java : perfect한 OOP 언어 - java file(class)
#        클래스 명 대문자로 시작
 
# Python : hybrid한 OOP 언어 - python file(module)
#          file 하나에 여러 개의 클래스가 들어올 수 있음
#          클래스 명 대문자로 시작할 필요없음
#          접근 제어자가 없음 -> 캡슐화 불가능
#          static 멤버변수 없음 -> 대신 static 메소드는 있다.
#          singleton / factory 패턴 -> ??
 
 
class Dog:
    name = None      # 멤버변수는 어디서든 추가할 수 있기 때문에 의미가 없다
    
    def bark(self):  # 메소드 첫번째 파라메터로 self
        print("멍")
 
    def printInfo(self):
        # Java   : this.name -> this.은 생략 가능 -> name
        # Python : self.name -> self.은 생략 불가 -> self.name
        print(self.name, self.age)
    
    # overloading 지원 안됨 -> 모든 메소드 명은 달라야한다.
    def printInfo2(self, c):  # 두번째 파라메터부터는 맘대로 이름 지정 가능 
        for _ in range(c):    # range(c) 만큼 반복
            print(self.name, self.age)
 
    # static method : 객체 만들지 않고 사용하는 메소드
    #                 메소드 파라메터에 self를 사용하지 않으면 static method
    #                 eclipse에서만 에러로 표시됨
    @staticmethod   # eclipse에서만 뜨는 에러표시 없애기 
    def staticMethodTest():
        print("ㅋ")
 
 
# main #
= Dog()               # Dog d = new Dog();
d.name = "철수"
d.age = 2               # 클래스 만들때 정의하지 않은 멤버변수를 어디서든 추가 가능
d.bark()                # 메소드 호출 할때는 self자리는 비워놓는다.
Dog.bark(d)             # 객체에서 메소드를 호출할때는 self 자리에 객체를 넣어줘야한다.
d.printInfo()
d.printInfo2(3)         # printInfo2를 3번 반복
Dog.staticMethodTest()  # Static method 불러오기
 
 
class shop:
 
    def showInfo(self):
        print(self.floor, self.name)
 
 
# main #
= shop()
s.floor = 1
s.name = "카페"
s.showInfo()
cs

'Python' 카테고리의 다른 글

12. Python - import_1  (0) 2021.02.23
11. Python - 생성자, 소멸자  (0) 2021.02.23
9. Python - 가위바위보 게임  (0) 2021.02.23
8. Python - if문, for문, while문  (0) 2021.02.23
7. Python - function  (0) 2021.02.23

BELATED ARTICLES

more