2.@property装饰器
之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作
注意点:
- # 1. 装饰器名,函数名需要一致.
- # 2. property需要先声明,再写setter,顺序不能倒过来
- # 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
- # 4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访
- 问器
- # 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
- # 2. property需要先声明,再写setter,顺序不能倒过来
例题:输入三个数字(私有),求三个数字的和尝试更改其中俩个数字
代码如下:
class Number(object):
def __init__(self,num1,num2,num3):
self._num1 = num1
self.__num2 = num2
self.__num3 = num3
@property
def num1(self):
print(self._num1)
@num1.setter
def num1(self.num):
self._num1 = num
def SUM(self):
print(self._num1 + self.__num2 + self.__num3)
number = Number(1,2,3)
number.num1 = 1000
number.SUM()
例题:
import numpy as np
class email(object):
def __init__(self):
pass
def zhuce(self):
print("请输入邮件地址:")
res = input('输入')
print("邮件地址",res,"@163.com")
def password(self):
print("请输入密码:")
mima = input('输入')
print("请再次输入密码:")
querenmima = input('输入')
if mima == querenmima:
print("密码设置成功")
else:
print("密码输入错误,请重新设置密码")
syx=email()
syx.zhuce()
syx.password()