专业创建网站,教育培训机构加盟,企业网站建设公司排名,品牌推广工作职责__cmp__
__lt__ 小于
__le__ 小于等于
__eq__ 等于
__ne__ 不等于 !
__gt__ 大于
__ge__ 大于等于 如何实现
__cmp__ 在 Python 2.x 中是核心比较方法#xff0c;可一站式定义所有比较逻辑#xff1b;
Python 3.x 中被__eq__/__lt__/__gt__ 等取代
方法和…__cmp__ __lt__ 小于__le__ 小于等于__eq__ 等于__ne__ 不等于!__gt__ 大于__ge__ 大于等于如何实现__cmp__在 Python 2.x 中是核心比较方法可一站式定义所有比较逻辑Python 3.x 中被__eq__/__lt__/__gt__等取代方法和返回值列表方法作用触发场景返回值__eq__定义比较规则abbool__ne__定义!比较规则a!bbool__lt__定义比较规则abbool__gt__定义比较规则abbool__le__定义比较规则abbool__ge__定义比较规则abbool我们直接利用两个圆的半径对比来将这些重载和特殊方法一一展示。defmain_method():circle1Circle(0,0,150)#圆1circle2Circle(0,0,200)#圆2r1circle1.get_radius()r2circle2.get_radius()#重载相等print(__eq__测试圆1半径{r1}和圆2半径{r2}相等,r1.__eq__(r2))#重载不相等print(__ne__测试圆1半径{r1}和圆2半径{r2}不相等,r1.__ne__(r2))#重载圆1小于圆2print(__lt__测试圆1半径{r1}小于圆2半径{r2},r1.__lt__(r2))#重载圆1大于圆2print(__gt__测试圆1半径{r1}小于圆2半径{r2},r1.__gt__(r2))#重载圆1小于等于圆2print(__le__测试圆1半径{r1}小于圆2半径{r2},r1.__le__(r2))#重载圆1大于等于圆2print(__ge__测试圆1半径{r1}小于圆2半径{r2},r1.__ge__(r2))main_method()最终完整代码classCircle:# 建立圆形的类def__init__(self,x0,y0,radius0):# 初始化self.__xx# x私有域self.__yy# y私有域self.__radiusradius# radius私有域# set x,y,radius域defset_x(self,x):self.__xxdefset_y(self,y):self.__yydefset_radius(self,radius):ifradius0:print(圆的半径不能为负数)self.__radiusradius# get x,y,radius域defget_x(self):returnself.__xdefget_y(self):returnself.__ydefget_radius(self):returnself.__radius# 返回圆的面积defget_area(self):return3.1415926*pow(self.__radius,2)defget_perimeter(self):return2*3.1415926*self.__radiusdef__str__(self):returnfCircle(半径{self.__radius},周长{self.get_perimeter():.2f},面积{self.get_area():.2f})definit_set(self):returnf圆 x:{self.__x}, y:{self.__y}, radius:{self.__radius}.# 2025.12.14 增加测量两个圆的x,y的距离defcontains_point(self,other_x,other_y):x1self.__x y1self.__y x2other_x y2other_y countDisint((pow((x2-x1),2)pow((y2-y1),2))**0.5)ifcountDisself.__radius:print(f坐标x:{other_x},y:{other_y},点2在园1内)returnTrueelse:print(f坐标x:{other_x},y:{other_y},点2不在园1内)returnFalse# 2025.12.14 对比圆2是否在圆1内# 2025.12.15 if条件为两点距离圆2半径小于圆1这样完全覆盖圆defcontains(self,circle_2D):x1self.__x y1self.__y x2circle_2D.get_x()y2circle_2D.get_y()r1self.__radius r2circle_2D.get_radius()countDis(pow((x2-x1),2)pow((y2-y1),2))**0.5ifcountDisr2r1:# 修改后可以完全包含print(f坐标x:{x2},y:{y2},半径{r2},点2在园1内)returnTrueelse:print(f坐标x:{x2},y:{y2},半径{r2},点2不在园1内)returnFalse# 2025.12.15 将昨天的圆2在圆1中的函数直接拷贝的defoverlaps(self,circle_2D):x1self.__x y1self.__y x2circle_2D.get_x()y2circle_2D.get_y()r1self.__radius r2circle_2D.get_radius()countDis(pow((x2-x1),2)pow((y2-y1),2))**0.5ifcountDisr1andr2r1:# 但我这个还是有瑕疵print(f坐标x:{x2},y:{y2},半径{r2},点2在园1内)returnTrueelse:print(f坐标x:{x2},y:{y2},半径{r2},点2不在园1内)returnFalsedef__contains__(self,other):x1self.__x y1self.__y x2other.get_x()y2other.get_y()r1self.__radius r2other.get_radius()countDis(pow((x2-x1),2)pow((y2-y1),2))**0.5ifcountDisr2r1:# 修改后可以完全包含print(f坐标x:{x2},y:{y2},半径{r2},点2在园1内)returnTrueelse:print(f坐标x:{x2},y:{y2},半径{r2},点2不在园1内)returnFalsedefmain_base():print(main_base函数。。。。。。。。。。。。。。。)aCircle()print(默认圆函数,a.init_set())# 打印类默认的x,y,radiusx100y100radius50bCircle(x,y,radius)print(圆构造好的内容,b.init_set())defmain_add():print(main_add函数。。。。。。。。。。。。。。。)# x:1 y:2 radius:5c1Circle(1,2,5)# 因为有__str__的帮助可以直接打印输出print(c1)print(f周长高纬度{c1.get_perimeter():.6f})# x:1 y:2 radius:10c1Circle(1,2,10)# 因为有__str__的帮助可以直接打印输出print(f周长高纬度{c1.get_perimeter():.6f})defmain_contains_point():other_X2120other_y2120c1Circle(100,200,150)c1.contains_point(other_X2,other_y2)defmain_contain_cicle():circle1Circle(100,200,150)circle2Circle(100,200,50)circle1.contains(circle2)#12.14用正常方法circle1.__contains__(circle2)#12.15利用修改魔法方法defmain_method():circle1Circle(0,0,150)#圆1circle2Circle(0,0,200)#圆2r1circle1.get_radius()r2circle2.get_radius()#重载相等print(__eq__测试圆1半径{r1}和圆2半径{r2}相等,r1.__eq__(r2))#重载不相等print(__ne__测试圆1半径{r1}和圆2半径{r2}不相等,r1.__ne__(r2))#重载圆1小于圆2print(__lt__测试圆1半径{r1}小于圆2半径{r2},r1.__lt__(r2))#重载圆1大于圆2print(__gt__测试圆1半径{r1}小于圆2半径{r2},r1.__gt__(r2))#重载圆1小于等于圆2print(__le__测试圆1半径{r1}小于圆2半径{r2},r1.__le__(r2))#重载圆1大于等于圆2print(__ge__测试圆1半径{r1}小于圆2半径{r2},r1.__ge__(r2))main_base()main_add()main_contains_point()main_contain_cicle()#12.14 重载测试圆2是否在圆1里main_method()#12.15重载方法测试继续下一个题