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)