一:动态得给类添加属性和方法
下面是我自己写的代码:
from types import MethodType #动态的给类添加属性和方法并使用 class cat(object): #定义一个空类cat类,里边没有属性和方法 pass c=cat() #动态添加属性,这体现了动态语言灵活的特点 c.name="Tom" print(c.name) #动态添加方法 def run(self): print("我是一只会跑的"+self.name) c.r=MethodType(run,c) #给对象添加一个属性时也可按照这种方法 c.r() 另外,也可以限制给类添加的属性,我们可以在定义类的时候定义一个特殊的属性(__slots__),可以限制动态的添加属性
二 @property:可以让我们对受限制的变量使用点语法三
class person(object):
def __init__(self,age)
self.age=age
per=person(18)
这样写,有缺点,也可以给age赋一个负值,不符合生活实际,这时候我们可以使用限制访问,自己写set和get方法才能访问,可以改为:
class person(object):
def __init__(self,age)
self.__age=age
def getAge(self):
return self.__age
def setAge(self,age)
if age<0:
age=0
self.__age=age
per.setAge(15)
print(per.getAge())
这样写的缺点是不够简洁,下面换一种写法
class person(object):
def __init__(self,age)
self.__age=age
@property
def age(self):
return self.__age
@age.setter
def age(self,age)
if age<0:
age=0
self.__age=age
per.age(100)
print(per.age)
三 运算符重载
运算符重载:
什么是运算符重载
让自定义的类生成的对象(实例)能够使用运算符进行操作
作用:
让自定义的实例像内建对象一样进行运算符操作
让程序简洁易读
对自定义对象将运算符赋予新的规则
算术运算符的重载:
方法名 运算符和表达式 说明
__add__(self,rhs) self + rhs 加法
__sub__(self,rhs) self - rhs 减法
__mul__(self,rhs) self * rhs 乘法
__truediv__(self,rhs) self / rhs 除法
__floordiv__(self,rhs) self //rhs 地板除
__mod__(self,rhs) self % rhs 取模(求余)
__pow__(self,rhs) self **rhs 幂运算
运算符重载原文链接:https://blog.csdn.net/zhangshuaijun123/article/details/82149056