Python 특수 속성property 원리 및 사용 방법 분석
property는 특수한 속성입니다. 접근할 때 기능 (함수) 을 실행하고 값을 되돌려줍니다.
import math
class Circle:
def __init__(self,radius): # radius
self.radius=radius
@property
def area(self):
return math.pi * self.radius**2 #
@property
def perimeter(self):
return 2*math.pi*self.radius #
c=Circle(10)
print(c.radius)
print(c.area) # area, ,
print(c.perimeter) #
'''
:
314.1592653589793
62.83185307179586
'''
주의: 이 때의 특성arear와perimeter는 값을 부여할 수 없습니다
c.area=3 # area
'''
:
AttributeError: can't set attribute
'''
2 왜 프로퍼티를 써?하나의 종류의 함수를 특성으로 정의한 후에 대상이 다시 사용할 때obj.name, 자신의name가 하나의 함수를 실행하고 계산한 것을 전혀 알아차릴 수 없습니다. 이런 특성의 사용 방식은 통일된 접근의 원칙을 따릅니다.
그 외에
ps: 대상을 위한 봉인은 세 가지 방식이 있습니다.
【public】
이런 것은 사실 포장하지 않고 대외적으로 공개된 것이다
【protected】
이런 포장 방식은 외부에 공개되지 않지만 친구(friend)나 자류(이미지에 대해'아들'이라고 하지만 왜 모두가'딸'이라고 말하지 않는지 모르겠다. 마치'parent'는 원래'부모'라는 뜻이지만 중국어는'부류'라고 부른다) 공개
【private】
이런 포장은 누구에게도 공개되지 않는다
python은 문법적으로 세 가지를 자신의class 메커니즘에 만들지 않았습니다. C++에서는 모든 데이터를 개인 데이터로 설정하고 set와 get 방법(인터페이스)을 제공하여 설정하고 얻습니다.python에서property 방법을 통해 실현할 수 있습니다
class Foo:
def __init__(self,val):
self.__NAME=val #
@property
def name(self):
return self.__NAME #obj.name self.__NAME( )
@name.setter
def name(self,value):
if not isinstance(value,str): #
raise TypeError('%s must be str' %value)
self.__NAME=value # , value self.__NAME
@name.deleter
def name(self):
raise TypeError('Can not delete')
f=Foo('egon')
print(f.name)
# f.name=10 # 'TypeError: 10 must be str'
del f.name # 'TypeError: Can not delete'
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.