zoukankan      html  css  js  c++  java
  • 属性property

    # 属性初识
    # class Bmi:
    #     def __init__(self, name, weight, height):
    #         self.weight = weight
    #         self.name = name
    #         self.height = height
    #
    #     @property   # 将一个方法伪装成属性,在代码本质上没有什么区别,但是在调用的时候显得更加合理
    #     def bmi(self):
    #         b = self.weight / self.height ** 2
    #         if b < 18.5:
    #             condition = "偏瘦"
    #         elif b < 23.9:
    #             condition = "正常"
    #         elif b < 27:
    #             condition = "过重"
    #         else:
    #             condition = "肥胖"
    #         return "{}的bmi是{},{}".format(self.name, b, condition)
    #
    # bm = Bmi("ly", 50, 1.48)
    # #不加property的调用方式  print(bm.bmi())
    # print(bm.bmi)  # 将方法伪装成了属性
    # print(bm.name)
    # bm.name = "yan"
    # print(bm.name)
    # print(bm.bmi)
    # #
    # # ly的bmi是22.826880934989045,正常
    # # ly
    # # yan
    # # yan的bmi是22.826880934989045,正常
    
    class Person:
    
        def __init__(self, name, age):
            self.name = name
            if type(age) is int:
                self.__age = age
            else:
                print("输入有误,应该输入数字")
    
        # 将他变为属性
        @property
        def age(self):
            return self.__age
    
        # 改变伪装成属性的方法
        @age.setter  # 如果对对象.age 进行赋值操作,这个函数自动执行
        def age(self,a1):
            if type(a1) is int:
                self.__age = a1
            else:
                print("输入有误,应该输入数字")
            # print(a1)
            # print(666)
        @age.deleter   # 执行del 操做时自动执行这个函数
        def age(self):
            print("............")
        
    p1 = Person("dudu", 99)
    # # print(p1.age())
    # print(p1.age)
    # p1.age = 66
    # print(p1.age)
    
    print(p1.age)
    p1.age = 66
    print(p1.age)
    
    # property :类似与bmi这中看着像名词,但是需要具体计算的,就用property装饰器,伪装成属性
  • 相关阅读:
    elasticsearch 插件 大全
    ElasticSearch 服务搭建
    限制玻尔兹曼机(Restricted Boltzmann Machine)RBM
    卷积神经网络
    [转]MATLAB cell数据类型
    [转]matlab语言中的assert断言函数
    [转]matlab中squeeze函数的用法,numel的用法
    Sparse autoencoder implementation 稀疏自编码器实现
    MATLAB中的randi函数
    可视化自编码器训练结果&稀疏自编码器符号一览表
  • 原文地址:https://www.cnblogs.com/yfjly/p/10592559.html
Copyright © 2011-2022 走看看