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 # d = 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 # s = 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 |