Java 프로그래밍 언어를 배운 친구들은 모두 Java 언어 학습 과정에서 클래스 속성의 getter 및 setter 메서드를 배울 것임을 알아야합니다. 그렇다면 파이썬에 비슷한 방법이 있습니까? 대답은 '예'입니다.
오늘의 공유 내용은 다음과 같습니다 : @property 데코레이터를 사용하여 Python에서 getter 및 setter 메서드를 구현하는 방법.
코드가 실제로 작동하기 전에 먼저 @property 데코레이터와 관련된 작은 지식을 이해합시다. 다음 실용적인 코드를 더 잘 이해하는 데 도움이됩니다.
1. 파이썬에는 세 가지 내장 데코레이터가 있습니다.
@staticmethod (정적 메서드)
@classmethod (클래스 메서드)
@property (설명자)
여기서 @property는 매우 유용한 구문 설탕입니다 (구문 설탕은 컴퓨터에 새로 추가되지 않은 항목을 나타냅니다. language Function,하지만 인간에게는 "달콤한"문법 일뿐입니다. "달콤한"문법이라고 애칭하는 이유는 문법적 설탕이 프로그래머에게 더 나은 코딩 스타일, 더 읽기 쉬운 코딩 방법을 제공하기 때문입니다.
@property의 가장 큰 장점은 메서드를 클래스에서 속성 호출로 전환하는 것입니다. Python의 내장 함수입니다. 클래스 메서드를 장식하는 데 자주 사용되며 속성에 액세스하여 함수를 호출하는 데 사용됩니다.
2. Python 코드 구현 :
1class Person:
2 def __init__(self,name,age,salary):
3 self.__name=name
4 self.__age=age
5 self.__salary=salary
6
7 def set_name(self,name):
8 self.__name=name
9
10 def get_name(self):
11 return self.__name
12
13 def set_age(self,age):
14 self.__age=age
15
16 def get_age(self):
17 return self.__age
18
19 def set_salary(self,salary):
20 self.__salary=salary
21
22 def get_salary(self):
23 return self.__salary
24
25 @property
26 def age(self):
27 return self.__age
28
29 @age.setter
30 def age(self,age):
31 self.__age=age
32
33if __name__ == '__main__':
34 p1 = Person('tom',11,1000)
35 print(p1.get_age())
36 p1.set_age(100)
37 print(p1.get_age())
38
39 print(p1.age)
40 p1.age = 28
41 print(p1.age)
42
43 #eval()的功能:将字符串str当成有效的表达式来求值并返回计算结果。如下是将字符串转换成方法名再调用:
44 def man():
45 return "good job"
46 print(eval("man")())
47
48 #eval()可以把list, tuple, dict和string相互转化,这里以list为示例进行演示:
49 list1 = "[33,2,22,11,44,55]"
50 print(type(list1))
51 list2 = eval(list1)
52 print(type(list2))
53 print(list2)
54 print(list2[0])
3. Python에서 읽기 전용 속성 정의
Python에서 읽기 전용 속성을 정의하는 것은 @property가 아니며 읽기 전용 속성을 정의하는 것도 매우 간단합니다. 메서드 이름으로 정의해야하는 속성을 사용합니다 ( 예 : 26 행 : age 속성을 메서드로 정의). , 메소드 내장 데코레이터 @property에 추가하면서 메소드 이름으로 속성 이름을 계속 사용합니다 (예 : 30 행 : age 속성을 메소드로 정의하고 @ age.setter를 메소드 이름에 추가).
[The Way of Infinite Testing] 공개 계정 , [receive resources]에 대한 답장,
Python 프로그래밍 학습 리소스 건조 상품,
Python + Appium 프레임 워크 APP UI 자동화,
Python + Selenium 프레임 워크 웹 UI 자동화,
Python + Unittest 프레임 워크 API에 대한 관심을 환영합니다. 오토메이션,
리소스와 코드는 무료로 발송됩니다 ~
기사 하단에 공식 계정의 QR 코드가 있습니다. 위챗에서 스캔 만하시면됩니다.
비고 : 빅 데이터 테스트, 기능 테스트, 테스트 개발, API 인터페이스 자동화, 테스트 운영 및 유지 관리, UI 자동화 테스트 등, WeChat 검색 공개를 포함한 테스트 기술 공유에 전념하는 내 개인 공개 계정이 공식적으로 개설되었습니다. 계정 : "Wuliang The Way of Testing"또는 아래 QR 코드를 스캔하세요.
관심을 더하고 함께 성장합시다!