1. 객체지향이란 무엇인가?
객체 지향은 프로그래밍 아이디어의 일종으로 현재 프로세스 지향과 객체 지향의 두 가지 주요 프로그래밍 아이디어가 있으며 그 중 C언어로 대표되며 프로세스 지향은 JAVA와 Python입니다
프로세스 지향은 각 함수와 데이터(방법에 사용되는 매개변수)입니다.그런 다음 일정한 순서에 따라 이러한 방법(각 방법은 하나의 과정으로 간주)을 수행하고 방법이 완료되면 일이 해결됩니다.
객체지향은 과정을 중시하지 않고 사물을 객체로 추상화한다는 개념으로 이 문제 안에 어떤 객체가 들어 있는지 속성과 방법을 부여한 다음 각 객체가 자신의 방법을 수행하도록 하여 문제를 해결한다
2. 클래스 및 객체
대상과 클래스는 대상 지향의 두 가지 핵심 포인트이며 우리는 먼저 그들을 구별해야 합니다
대상: 대상은 바로 구체적인 것이다. 예를 들어 고양이를 보면 눈앞에 있는 이 고양이를 본다. 그것은 특유의 눈, 코, 입을 가지고 있다.
류:류는 대상의 일부 속성과 방법을 수집했습니다. 예를 들어 지금 고양이를 생각하고, 머릿속으로 생각하는 것은 고양이의 기본 특징입니다. 예를 들어 눈, 코, 입의 대략적인 모양, 몸의 대략적인 모양입니다
3. 클래스 및 객체 정의
클래스의 형식을 정의합니다
class Cat:
age = "" 클래스 속성
defage_get(self): 클래스 메서드
print(age)
클래스를 정의할 때 반드시 있어야 하는 클래스 속성 및 클래스 방법은 클래스의 일부 기본 데이터이며 클래스 방법은 클래스의 고유한 기능입니다.
클래스 이름 정의 머리글자 대문자
age_get은 인스턴스 메서드입니다. 첫 번째 매개 변수는 일반적으로 self로 인스턴스 개체 자체를 나타냅니다.
클래스 만들기 (인스턴스 개체)
cat1 = Cat()
cat2 = Cat()
cat3 = Cat()
python에서 정의된 값을 기준으로 여러 개체를 만들 수 있습니다
클래스 생성 및 인스턴스화 개체
class Dog:
color = "yellow"
age = "2"
def eat(self):
print("개는 뼈를 먹는다")
dog = Dog()
dog.eat()
대상을 만들 때, 바로 같은 틀로, 하나의 실물을 만드는 것이다.
4. 객체 속성 값과 마법 함수
class Dog: # 개 만들기
color = "yellow" # 개의 색상 속성
age = "2" # 개의 나이 속성
def eat(self): # 개의 방법
print("개는 뼈를 먹는다")
dog = Dog () # 개 개체 인스턴스화
dog.color = "노란색" # 개 개체의 색상 속성 변경
print("개의 색:%s 개의 나이는:%s"% (dog.color, dog.age))
dog.eat()
주의: dog.color = "노란색" 여기서 변경된 것은 dog라는 개체의 color 속성입니다. Dog와 같은 color는 변경되지 않습니다.
클래스 메서드에서 출력 속성
class Dog: # 개 만들기
color = "yellow" # 개의 색상 속성
age = "2" # 개의 나이 속성
def output(self): # 개의 방법
print(self.color) # self는 객체 자체를 의미하며, 여기서는 Dog 객체의 color를 가리킨다.
print(self.age)
dog = Dog () # 개 개체 인스턴스화
dog.color = "노란색" # 개 개체의 색상 속성 변경
dog.output () # 객체의 함수 호출
클래스에 자신의 클래스 속성을 불러올 때 self를 사용합니다
5. 마법 함수
마법 함수는 개체를 만들 때 호출되며 이 특성을 사용하여 개체를 만들 때 개체 속성에 값을 부여할 수 있습니다
class Cat:
name = "미미"
age = "3"
sex = "모"
def __init_(self, a, b, c): # 마법 함수 __init_ 여기서 세 개의 형삼을 주고, 그것들을 객체의 속성에 준다.
super().__init__()
self.name = a
self.age = b
self.sex = c
def __del__(self): # 마법 함수 __del_이 삭제될 때 호출됩니다.
return "나 삭제됐어"
def __str__(self): # 마법 함수 __str__ 개체를 출력할 때 호출됨
return "대상 자체를 출력했습니다"
def output(self):
print(self.name)
print(self.age)
print(self.sex)
cat = Cat("작은 국화", "1", "4") # 가져오기__init__인자
cat.output()
print(cat) # 출력 개체
마법 함수는 개체를 만들 때 호출됩니다. 개체를 만들 때 새 값을 만들 때 주로 사용됩니다.
6. 데코레이션
데코레이터는 데코레이터가 가져오는 매개변수가 함수이기 때문에 다양한 기능을 구현하여 이 함수의 기능을 향상시킵니다.
정적 속성
class Room:
def __init__(self, name, ower, width, length, heigh):
self.Name = name
self.Ower = ower
self.Width = width
self.Length = length
self.Heigh = heigh
@property # 메서드를 데이터 속성으로 변환
def cal_area(self):
print("%s가 사는%s의 총 면적은%s평방미터의 지하실"% (self.Ower, self.Name, self.Width * self.Length))
r1 = Room("화장실", "북야", 2, 2, 20000) #실례화하여 r1을 만들고,실례화하는 과정이 바로 __init__을 실행하는 것이다
r2 = Room("베이징", "냥나리", 20, 60, 20000)
r1.cal_area # property라는 장식기를 사용한 후, 인스턴스는 함수 속성을 호출하는 것과 같은 데이터 속성을 호출합니다. ( )를 추가하지 않고도 호출할 수 있습니다.
r2.cal_area
정적 방법
class Room:
tag = 1 # 클래스의 데이터 속성 정의
def __init__(self, name, ower, width, length, heigh):
self.Name = name
self.Ower = ower
self.Width = width
self.Length = length
self.Heigh = heigh
@classmethod # 이 장식기는 유별나게 사용하는 방법입니다.
def tell_info(cls): # cls 대표 클래스 자체
print(cls)
print("---", cls.tag)
@staticmethod # 정적 메서드는 클래스라는 도구 모음입니다. 클래스와 바인딩하거나 인스턴스와 바인딩하지 않습니다.
def wash_body(a, b, c):
print("%s %s 목욕 중"% (a, b, c))
Room.wash_body('북야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹
r1 = Room("화장실", "베이징", 2, 2, 20000) # 인스턴스 r1을 구현합니다.
r1.wash_body("북야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹야옹
정적 클래스
class Room:
tag = 1 # 클래스의 데이터 속성 정의
def __init__(self, name, ower, width, length, heigh):
self.Name = name
self.Ower = ower
self.Width = width
self.Length = length
self.Heigh = heigh
@classmethod # 이 장식기는 유별나게 사용하는 방법입니다.
def tell_info(cls): # cls 대표 클래스 자체
print(cls)
print("---", cls.tag) #Room.tag와 동등
Room.tell_info() # 클래스 자체를 자동으로 cls에 전달합니다
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
Python에서 logging 기본 용법 (0) | 2022.11.28 |
---|---|
Python 폴더 이동 (0) | 2022.11.28 |
파이썬 섭씨도와 화씨도의 변환 (0) | 2022.11.25 |
pycharm 적용 팁8: 실행 프로그램의 일부 코드 (0) | 2022.11.25 |
python이 xls 형식을 xlsx 형식으로 변환 (0) | 2022.11.25 |