zoukankan      html  css  js  c++  java
  • 面向对象_内置函数 property

    property

    将方法伪装成为属性,可以不用加上()就可以调出其属性。

    但是用__dict__,不能调出此属性

    from math import pi
    class Circle:
        def __init__(self,r):
            self.r = r
        @property
        def perimeter(self):
            return 2*pi*self.r
        @property
        def area(self):
            return self.r**2*pi
    
    c1 = Circle(5)
    print(c1.area)     # 圆的面积
    print(c1.perimeter) # 圆的周长
    property

    property有2个配合使用的函数

    property可以和setter,delecter配合使用,已达到get,set,delect的功能

    class Stuff_price:
        def __init__(self,original_price,discount):
            self.__original_price=original_price
            self.__discount=discount
        @property
        def price(self):
            print('我执行了了价格')
            return self.__original_price*self.__discount
        @price.setter
        def price(self,new_discount):
            print('我执行了setter')
            self.__discount=new_discount
        @price.deleter
        def price(self):
            print('我执行了 delecte')
            # del self.__original_price
    apple=Stuff_price(10,0.5)
    print(apple.price)
    apple.price=0.8
    print(apple.price)
    del apple.price
    print(apple.price)
    '''输出结果我执行了了价格
    5.0
    我执行了setter
    我执行了了价格
    8.0
    我执行了 delecte
    我执行了了价格
    8.0
    '''

    解析

     注意del 并不是表示去删除,而是表示,去操作方法的引子。

    这样便实现了,正常的属性的调法

  • 相关阅读:
    Eclipse中的快捷键
    Eclipse配置
    Java语言概述
    视口及媒体查询
    弹性盒flex
    less——css预处理语言
    过渡/动画/变形
    列表/表格/表单
    渐变
    背景background
  • 原文地址:https://www.cnblogs.com/accolade/p/10512863.html
Copyright © 2011-2022 走看看