python中的eval函数怎么用,本文教你几大妙用(python eval函数的作用)

网友投稿 294 2022-06-14


学习过Java 编程语言的小伙伴,应该都知道在Java 语言学习过程中会学到类属性的getter & setter 方法。那么在Python中是否也有类似的方法呢?答案是,有的。

今天的分享内容是:如何使用@property 装饰器去实现Python 中的getter & setter 方法。在代码实操之前,先来了解下装饰器相关的小知识。有利于更好地理解以下实操代码。

1、Python 内置有三大装饰器:

@staticmethod(静态方法)

@classmethod(类方法)

@property(描述符)

其中@property 则是一个非常好用的语法糖(语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。之所以亲切地称之为“甜蜜”的语法,是因为语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读)。@property 最大的好处就是在类中把一个方法变成属性调用,是Python 内置的功能,常用来修饰类方法,用于以访问属性的方式调用函数。

2、Python 代码实现:

class 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)。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python跟爬虫之间是什么关系?爬虫是Python的专利吗?(python爬虫有什么作用)
下一篇:Python中阶学习:type是什么意思(python的type是什么意思)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~