面向对象_内置函数

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

猜你喜欢

转载自www.cnblogs.com/accolade/p/10512863.html