Python 기본 문법 소개 - 대상(하), 비정상 처리, 패키지 및 모듈

개요:


지난 절에서는 주로 대상을 대상으로 하는 몇 가지 기본 개념을 소개했다. 그것이 바로 클래스, 클래스의 구성 요소인'방법과 속성', 클래스의 특성인'계승, 다태와 봉인'이다.이 과목은 세 부분으로 나뉜다. (1) 클래스 속성, 클래스 방법과 호출, 정적 방법과 호출, 단일 클래스(二) 이상 처리(三) 패키지와 모듈

제1부분: 클래스 방법, 정적 방법과 단일 클래스


클래스 속성(1) 클래스 속성은 실례의 속성과 구별되고 클래스 속성은 클래스 대상에 속하며 실례 대상에 의해 공유된다(2) 속성 찾기 규칙: 먼저 실례 대상의 실례 속성;하위 클래스 객체의 클래스(?)속성(3) 실례 대상을 통해 클래스 속성의 값을 수정할 수 없다.수정된 속성이 인스턴스에 없는 경우 인스턴스 속성을 동적으로 추가합니다.
class Person:
    sum_num = 0

    def __init__(self):
        Person.sum_num += 1 # , , 1

# p1 
p1 = Person("zhangsan")
print(p1.sum_num, Person.sum_num)

# , , 
p1.sum_num = 100
print(p1.sum_num, Person.sum_num)

클래스 방법 및 호출
(1) @classmethod로 수식하는 방법을 사용하고 첫 번째 파라미터는cls(2)클래스 방법으로 클래스 속성을 조작한다.실례 방법 조작 실례 대상 속성 (3) 호출 방식: 클래스 이름.클래스 방법();인스턴스 객체.클래스 방법()#이 방법으로는 클래스 방법을 호출하는 것을 추천하지 않습니다.
class Date(object):

    def __init__(self, day=0, month=0, year=0):
        self.day = day
        self.month = month
        self.year = year

        # 
    @classmethod
    def from_string(cls, date_as_string):
        day, month, year = map(int, date_as_string.split('-'))
        date1 = cls(day, month, year)
        return date1

정적 방법 및 호출
(1) @staticmethod 수식 방법을 사용하면 클래스와 대상과 관계가 없는 일부 기능에 매개 변수를 전송할 필요가 없습니다 (2).가능한 한 정태적인 방법을 적게 쓰다.
# 
@staticmethod
def is_date_valid(date_as_string):
    day, month, year = map(int, date_as_string.split('-'))
    return day <= 31 and month <= 12 and year <= 3999

단일 클래스 (1) new (cls) 는 슈퍼 클래스object 클래스에 내장된 방법입니다.매개 변수cls는 클래스 대상(2) 사용자가 만든 대상이고 만든 대상의 인용을 되돌려줍니다.
# id(cls) 
class DataBaseObj(object):
    def __init__(self):                                  # 
        print("-------init  -------")

    def __new__(cls):                                 # 
        print("cls_id:" id(cls))
        return object.__new__(cls)                 # 

(2) 전체 프로그램 시스템에서 하나의 실례 대상만 있다.개념은 디자인 모델 중의singleton 모델과 같다.
class SingleInstance:
    __instance = None
    def __init__(self):
        print("-----init-----")

    def __new__(cls):
        if cls.__instance == None:
            cls.__instance = object.__new__(cls)
        return cls.__instance

s1 = SingleInstance()
print(id(s1))
s2 = SingleInstance()
print(id(s2))

제2부분: 이상 처리


(1) 예외 발견
try:
     
except ExceptionType as err:
     

(2) 여러 예외 발견
try:
     
except (ExceptionType1, ExceptionType2, ...) as err:
     

(3) 발생할 수 있는 모든 이상 포획
try:
     
except Exception as err:
     

(4)finally
try:
     
except Exception as err:
     
finally:     
      ( , )

(4) 이상 처리의 의미:
  • 어떤 업무에 이상이 발생하여 전체 프로그램의 다른 업무에 영향을 미치지 않도록 방지
  • 이상 처리의 본질은 이상을 해결하는 것이 아니라 이상이 발생할 때의 좋지 않은 영향을 최소화하는 것이다
  • 섹션 3: 패키지 및 모듈


    Python 프로젝트 구조: (1) 1개 프로젝트: n 개 패키지 (2) 1개 패키지: n 개 모듈 (3) 모듈의 이름:.py 확장자 이름의 파일을 모듈로 도입하는 방법: (1) 모듈 가져오기: import modelname 또는 import modulename.model_name(2) 다중 모듈 가져오기: import modelname1, model_name2, ...(3) 모듈에서 함수 가져오기:from modelname import fun1, fun2import model_name Vs from model_name import fun (1) 전자는 모듈을 가져오는 것입니다. 모듈의 내용을 인용하려면 (class,method,variables...)전체 이름, 즉 [module name]을 사용해야 합니다.[attr_name].(2) 후자는 특정한 대상을 가져오는 것이다(class, 기타 대상...).그런 다음 [module name], 즉 [attr name]를 추가하지 않고도 이러한 객체를 직접 사용할 수 있습니다.특별 사용법: (1) 가방 안의 모듈을 다른 가방에 가져오기만 하면 init.py 파일에 all = [model name] (2) 대량 가져오기:from package import*;(1) (2) 구속 작용을 한다.

    좋은 웹페이지 즐겨찾기