zoukankan      html  css  js  c++  java
  • Python内置函数之-property

    property 是一个内置的装饰器函数,只在面向对象中使用

    求一个圆的周长和面积

    # 周长和面积都是通过类的方法得到
    from
    math import pi class Cricle: def __init__(self,r): self.r = r def getPerimeter(self): return 2*pi*self.r def getArea(self): return pi*self.r**2 c1 = Cricle(5) print(c1.getPerimeter()) print(c1.getArea())
    # 人的BMI,它是计算得来得,但更像是一个人的属性
    
    # 传统做法
    class  Person:
        def __init__(self,name,high,weight):
            self.name = name
            self.high = high
            self.weight = weight
    
        def getBIM(self):
            return self.weight/(self.high**2)
        
    wangys=Person('wangys',1.75,70)
    print(wangys.getBIM())
    
    
    # perporty
    class  Person:
        def __init__(self,name,high,weight):
            self.name = name
            self.high = high
            self.weight = weight
    
        @property
        def bim(self):
            return self.weight/(self.high**2)
    
    wangys=Person('wangys',1.75,70)
    print(wangys.bim)
    class Goods: # 定义了一个商品类
        discount = 0.5  # 折扣是5折
        def __init__(self,name,price):
            self.name = name
            self.__price = price # 将需要修改的属性设置成为私有属性
     
        @property
        def price(self): # 定义一个正常的属性,然后做相应的操作
            return  self.__price * Goods.discount
    
    apple = Goods('apple',10)
    print(apple.price)
    class Persion:
        def __init__(self,name):
            self.__name = name
    
        @property
        def name(self):
            return self.__name
        @name.setter
        def name(self,new_name):
            self.__name = new_name
    # 但是圆的周长和面积更像圆的属性,使用property 将一个函数(无参数)伪装成一个类的属性
    
    from math import  pi
    class Cricle:
        def __init__(self,r):
            self.r = r
    
        @property
        def perimeter(self):
            return 2*pi*self.r
        @property
        def area(self):
            return pi*self.r**2
    
    
    c1 = Cricle(5)
    print(c1.perimeter)
    print(c1.area)
  • 相关阅读:
    逝华
    数论知识
    #10081. 「一本通 3.2 练习 7」道路和航线 题解
    Tire 字典树
    Manacher算法
    时间变奏曲
    【算法】莫队
    【算法】深度优先搜索(dfs)
    【算法】数位 dp
    【笔记】关于位运算(2)
  • 原文地址:https://www.cnblogs.com/wc89/p/10387025.html
Copyright © 2011-2022 走看看