赞
踩
目录
上文提到的_ _init_ _构造方法,是Python类内置的方法之一。
这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术方法
魔术方法非常多
我们学习几个常见的即可
演示
- class Student:
- def __init__(self,name,age,tel):
- self.name=name
- self.age=age
- self.tel=tel
- print("创建了一个类")
-
- stu=Student("张三",12,"2143235")
- print(stu)
- print(str(stu))
结果是
如上图
当类对象需要被转换为字符串之时,会输出如上结果(内存地址)
内存地址没有多大作用,我们可以通过_ _str_ _方法,控制类转换为字符串的行为。
- class Student:
- def __init__(self,name,age,tel):
- self.name=name
- self.age=age
- self.tel=tel
- print("创建了一个类")
- def __str__(self):
- return f"Student类对象,name={self.name},age={self.age},tel={self.tel}"
-
- stu=Student("张三",12,"2143235")
- print(stu)
- print(str(stu))
结果是
演示
- class Student:
- def __init__(self,name,age,tel):
- self.name=name
- self.age=age
- self.tel=tel
- print("创建了一个类")
- def __lt__(self, other):
- return self.age<other.age
-
- stu1=Student("张三",12,"2143235")
- stu2=Student("李四",22,"1244235")
- print(stu1<stu2)
- print(stu1>stu2)
结果是
演示
- class Student:
- def __init__(self,name,age,tel):
- self.name=name
- self.age=age
- self.tel=tel
- print("创建了一个类")
- def __le__(self, other):
- return self.age<=other.age
-
- stu1=Student("张三",12,"2143235")
- stu2=Student("李四",22,"1244235")
- print(stu1<=stu2)
- print(stu1>=stu2)
结果是
上图中,输出的是FALSE,这是因为如果没有实现eq这个魔术方法,那么等等符号它就默认比较内存地址
演示
- class Student:
- def __init__(self,name,age,tel):
- self.name=name
- self.age=age
- self.tel=tel
- print("创建了一个类")
- def __eq__(self, other):
- return self.age==other.age
-
- stu1=Student("张三",22,"2143235")
- stu2=Student("李四",22,"1244235")
- print(stu1==stu2)
- print(stu1)
- print(stu2)
结果是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。