1.动态给类添加方法
对于动态给类添加方法,首先我们应该定义好一个类和一个方法,随后通过实例化对象,将这个方法赋予给实例化对象,最后调用即可。
from types import MethodType #导入MethodType方法
class cat: #定义猫类
def eat(self): #定义吃的方法
print("猫猫喜欢吃小鱼饼干") #输出猫猫喜欢吃小鱼饼干
def run(self): #定义跑的方法
print("猫咪跑的非常快") #输出猫咪跑的非常快
newcat=cat() #实例化一个猫对象
newcat.run = MethodType(run,newcat) #通过MethodType方法将奔跑方法赋予给猫对象
newcat.run() #调用猫奔跑方法
2.运算符重载
运算符重载对类的专有方法进行重载,看下面实例:
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
最后的输出结果则是:Vector(7,8)
而我们如果想重载pow运算符,又应该如何去写呢,下面看代码
class student: # 定义学生类
name = '' # 定义学生姓名
grade = 0 # 定义学生分数
def __init__(self, name, grade): # 定义构造方法
self.name = name # 定义学生姓名属性
self.grade = grade # 定义学生分数属性
def __pow__(self, other): #重载pow运算符
return self.grade**other.grade #返回self.grade的other.grade次方
s1=student('a',2) #实例化对象s1
s2=student('b',4) #实例化对象s2
print(s1**s2) #输出s1和s2成绩次方运算
在代码中,我们首先定义学生类,并创建学生姓名和分数属性,而我们在运算符重载中则是重新对pow运算符进行了定义,最后进行print(s1**s2)运算即可。