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 并不是表示去删除,而是表示,去操作方法的引子。

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

  • 相关阅读:
    SpringBoot08-缓存
    Spring注解-自动装配(三)
    Spring注解-生命周期与属性赋值(二)
    Spring注解-组件注册(一)
    剖析SpringMVC流程与整合(八)
    SpringMVC视图解析与配置(六)
    SpringMVC的其他功能(七)
    简单了解SpringMVC(五)
    Java动态代理
    Spring事务(四)
  • 原文地址:https://www.cnblogs.com/accolade/p/10512863.html
Copyright © 2011-2022 走看看