zoukankan      html  css  js  c++  java
  • 属性

    class B:
        def __init__(self,name, weight, height):
    
            self.name = name
            self.weight = weight
            self.height = height
    
        @property
        def bmi(self):
            print(666)
            return self.weight / self.height ** 2
    
    
    gouge = B('曾二狗', 55, 1.67)
    print(gouge.bmi)
    
    # bmi看起来应该是一个名字,但是你用一个方法去实现
    # property:是将方法伪装成一个属性,虽然在代码层面上没有提升,
    # 但是他会让你的代码看起来更合理。
    加上@property就是为了在
    print(gouge.bmi)的时候就不用在里面加()了。
    
    
    class B:
        def __init__(self,name, weight, height):
    
            self.name = name
            self.weight = weight
            self.height = height
    
        @property
        def bmi(self):
            print(666)
            return self.weight / self.height ** 2
    
    
    gouge = B('曾二狗', 55, 1.67)
    print(gouge.bmi)
    
    # bmi看起来应该是一个名字,但是你用一个方法去实现
    # property:是将方法伪装成一个属性,虽然在代码层面上没有提升,
    # 但是他会让你的代码看起来更合理。
    class Foo:
    
        def __init__(self,name):
            self.name = name
        @property   # ***
        def AAA(self):
            print('get的时候运行我啊')
    
        @AAA.setter  # *
        def AAA(self,value):
    
            print('set的时候运行我啊')
    
        @AAA.deleter  # *
        def AAA(self):
            print('delete的时候运行我啊')
    obj = Foo('alex')
    # obj.name = '太白'
    # print(obj.name)
    # del obj.name
    # print(obj.name)
    # obj.AAA
    obj.AAA = 666  # 对伪装的属性进行改值是就会调用 def AAA(self,value):
    del obj.AAA  

    做一个卖苹果的例子:

    苹果:原始价位8元,折扣价格:0.8,计算实际价格
    class Product:
    
        def __init__(self, name, origin_price, discount):
            self.name = name
            self.__origin_price = origin_price
            self.__discount = discount
        @property
        def price(self):
            return self.__origin_price * self.__discount
    
        @price.setter
        def price(self, new_price):
            self.__origin_price = new_price
    apple = Product('苹果', 8, 0.95)
    # print(apple.price)
    apple.price = 7
    print(apple.price)

     

  • 相关阅读:
    关于C#中timer类 (转)
    AutoResetEvent (转)
    给韬哥的回复
    sql中的case when 的用法涉及到大于小于号
    vba中获取当前日期
    vba中的小技巧
    sql server2000中的两个整数相除保留十位小数
    vba中新建文件,关闭文件,锁屏,覆盖同名文件
    无法切换到google.com的解决办法
    mysql 常用命令
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/9988286.html
Copyright © 2011-2022 走看看