Python 기본 문법 소개 - 대상(하), 비정상 처리, 패키지 및 모듈
3658 단어 Python3.6.5토대문법 소개
개요:
지난 절에서는 주로 대상을 대상으로 하는 몇 가지 기본 개념을 소개했다. 그것이 바로 클래스, 클래스의 구성 요소인'방법과 속성', 클래스의 특성인'계승, 다태와 봉인'이다.이 과목은 세 부분으로 나뉜다. (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) 이상 처리의 의미:
클래스 속성(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) 이상 처리의 의미:
try:
except ExceptionType as err:
try:
except (ExceptionType1, ExceptionType2, ...) as err:
try:
except Exception as err:
try:
except Exception as err:
finally:
( , )