zoukankan      html  css  js  c++  java
  • python面向对象之属性

    property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值

    class Person:
        def __init__(self,name,height,weight):
            self.name = name
            self.__height = height
            self.__weight = weight
        @property    #     装饰,将bim方法伪装成一个属性
        def bmi(self):
            return "%s的BMI指数是%s" %(self.name,self.__weight / self.__height ** 2)
    
    p = Person("alex",1.8,70)
    print(p.bmi)    #装饰伪装成一个属性 之后输出打印不必写 p.bmi()
    为什么要用property
    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法擦觉自己
    的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循l统一访问的原则

    由于新式类中具有三种访问方式,我们可以根据他们几个属性的访问特点,分别将三个方法定义为
    同一属性:获取,修改,删除
    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         #  修改属性
        def age(self,a1):
            if type(a1) is int:
                self.__age = a1
            else:
                print("输入有误")
        @age.deleter        #  删除属性
        def age(self):
            del self.__age
            print(66)
    
    p1 = Person("alex",20)
    # print(p1.age)    #或取属性,直接调用
    # p1.age = 40      # 修改属性
    # print(p1.__dict__)    #   内部被修改{'name': 'alex', '_Person__age': 40}
    # print(p1.age)
    del p1.age       # 删除属性
    print(p1.__dict__)    # {'name': 'alex'}    __age被删除
  • 相关阅读:
    H264--2--语法及结构
    LIB和DLL的区别与使用
    动态库与静态库优缺点比较
    网络摄像机连接图
    作为一名安防人,你真的了解网络摄像机吗?
    帧率、分辨率、码流的关系
    视频监控存储空间大小与传输带宽计算方法
    如何配置监控系统的电源功率?
    Websocket通信过程
    Python进阶点
  • 原文地址:https://www.cnblogs.com/caodneg7/p/9378445.html
Copyright © 2011-2022 走看看