zoukankan      html  css  js  c++  java
  • python_day7 property ,封装

    类的函数中增加property 装饰器,

    在外部调用函数的时候 不用加括号,伪装成属性的形式

    #######################

    class Foo:
    @property
    def test(self):
    print('is ok')
    A=Foo()
    A.test

    ###############################################
    修改隐藏函数、变量 方法1:
    内部调用,传递变量
    ####################################
    class GO:
    def __init__(self,name,age):
    self.__name=name
    self.__age=age
    def ok(self):
    print('Foo的age:', self.__age)
    def XG(self,x,y):
    if not isinstance(x,str):
    raise TypeError('名字必须是字符串')
    if not isinstance(y,int):
    raise TypeError('年龄必须是数字')
    self.__name=x
    self.__age=y
    A=GO('la',18)
    A.XG('onda',20)
    A.ok()

    ######################################
    通过使用property 将 函数 模拟成为 变量 来拿结果
    那么 设置 隐藏属性, 也可以 模拟成为 变量的方式 : xx=N
    #################################################
    class GO:
    def __init__(self,name,age):
    self.__name=name
    self.__age=age
    @property
    def pri_name(self):
    return self.__name
    @pri_name.setter
    def pri_name(self,x):
    self.__name=x
    # print(self.__name)
    @pri_name.getter
    def pri_name(self):
    print(self.__name)

    @pri_name.deleter
    def pri_name(self):
    del self.__name

    A=GO('la',18)
    A.pri_name
    A.pri_name='onda'
    print('------------>')
    A.pri_name
    del A.pri_name
    A.pri_name #-->删除后 获取不到,报错

    要注意的是,函数名都是相同的,都是 @property 下面的函数名
    下面使用的是 setter ,getter deleter
    ########################################
    增加权限判断以后 
    ##################################
    class Foo:
    def __init__(self,name,QX='False'):
    self.__name=name
    self.QX=QX
    @property
    def name(self):
    pass
    # print(self.__name)
    @name.getter
    def name(self):
    return self.__name
    @name.setter
    def name(self,x):
    self.__name=x
    @name.deleter
    def name(self):
    if self.QX!='True':
    raise TypeError('没有权限')
    del self.__name


    JG=Foo('la','True')
    print(JG.name)
    JG.name='onda'
    print(JG.name)
    del JG.name
    print(JG.name)



  • 相关阅读:
    日记搬迁
    学生会管理系统(JavaWeb与数据库课程小实践)
    疯狂忙碌边缘
    英语复习二:每单元的翻译篇章
    Don't always upset yourself !
    一文教你读懂并使用GTD高效时间管理法
    Day05-黑马学习篇(二)matplot基本绘图函数集合
    Day04-黑马学习篇(一)matplot画图基本要点
    Day03-基础篇(四)Pandas与数据清洗
    Day02 基础篇(三)用NumPy快速处理数据
  • 原文地址:https://www.cnblogs.com/onda/p/7006922.html
Copyright © 2011-2022 走看看