IOT python 高级培训(二)

property函数

property() 函数的作用是在新式类中返回属性值。

用法

class property([fget[, fset[, fdel[, doc]]]])

参数

  • fget -- 获取属性值的函数
  • fset -- 设置属性值的函数
  • fdel -- 删除属性值函数
  • doc -- 属性描述信息

实例

#定义一个可控属性值 x
class C(object):
    def __init__(self):
        self._x = None
 
    def getx(self):
        return self._x
 
    def setx(self, value):
        self._x = value
 
    def delx(self):
        del self._x
 
    x = property(getx, setx, delx, "I'm the 'x' property.")

视频实例

#property 所有权
class Person(object):
    def __init__(self,age):
        #属性直接对外暴露
        # self.age=age
        self._age = age
    # def getAge(self):
    #     return self._age
    def setAge(self,age):
        if age<0:
            age=0
        self._age=age
    #方法为受限制的变量去掉双下划线
    @property
    def age(self):
        return self._age
    @age.setter #去掉下划线.setter
    def age(self,age):
        if age<0:
            age=0
        self._age=age


per=Person(18)
# 直接暴漏不安全,没有数据过滤
# per.age=-10
# print(per.age)
# per.setAge(15)
# print(per.getAge())



per.age=-100#相当于调用setage
print(per.age)#相当于调用getage
#property 可以让你对受限制访问的属性使用点语法

动态添加属性

视频实例

#动态添加属性
#创建一个空类
# from types import MethodType
#
# class Person(object):
#     pass
# #添加属性
# per=Person()
# #动态添加属性,体现动态添加特点 灵活
# per.name='tom'
# #d动态添加方法
# print(per.name)
#
# def say(self):
#     print("my name is "+self.name)
# per.speak=MethodType(say,per)
# per.speak()
#-------------------------------------
from types import MethodType

class Person(object):
    __slots__ =("name","say","speak")#slots 插入  限制添加属性
#添加属性
per=Person()
#动态添加属性,体现动态添加特点 灵活
per.name='tom'
#d动态添加方法
print(per.name)

def say(self):
    print("my name is "+self.name)
per.speak=MethodType(say,per) #使用包添加函数
per.speak()

运算符

 

实例

import operator

print(1+2)
print("1"+"2")
#不同的类型用加法就会有不同解释
class Person(object):
    def __init__(self,num):
        self.num=num
    #运算符运算
    def __add__(self, other):
        return Person(self.num+other.num)
    def __str__(self):
        return "num = "+str(self.num)

per1=Person(1)
per2=Person(1)
print(per1+per2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值