class A(object):
def __init__(self):
#私有:在变量名称前加上'__'
#私有 不可继承 不可在外部调用
#但是可以在内部调用
self.__a = 1000
#约定使用“__”来表示私有
self.
def B(self):
print(self.__a)
A_ = A()
print(A_.B())
案例1
import numpy as np
class zhuce(object):
def __init__(self):
pass
def youxiang(self):
print('使用邮箱注册')
yx = input('输入')
print(yx)
self.yx=yx
def password(self):
print('请输入密码')
pw = input('输入')
print(pw)
self.pw=pw
print('确认密码')
qpw = input('输入')
print(qpw)
self.qpw=qpw
def yanzheng(self):
if self.pw == self.qpw:
print('密码设置成功')
else:
print('两次输入密码不一致')
def yzm(self):
import random
a=random.randrange(1000,9999)
print(a)
self.a = a
sr = input('输入')
self.sr = sr
def shuru(self):
if self.sr == int(self.a):
print('验证码正确')
else:
print('请重新输入')
zc = zhuce()
zc.youxiang()
zc.password()
zc.yanzheng()
zc.yzm()
zc.shuru()
@property装饰器
之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。如果要做到这点,就可以考虑使用@property包装器来包装getter和setter方法,使得对属性的访问既安全又方便。
# 使用装饰器的时候,需要注意:
# 1. 装饰器名,函数名需要一致.
# 2. property需要先声明,再写setter,顺序不能倒过来
# 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
# 4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器.
案例2
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.SUM()
案例3
class zone(object):
def __init__(self):
self.mimi = 'laalalalallala '
@property
def mimi(self):
return self._mimi
@mimi.setter
def mimi(self,str_):
self._mimi = str_
def look():
qx = zone()
print(qx.mimi)
def change(password,str_):
if password == '001128':
qx = zone
print(qx.mimi)
qx.mimi = 'lalala'
print(qx.mimi)
else:
print('密码错误')