python中的类,对象,成员方法,构造方法,__init__,__lt__,__le__,__eq__ 偏执的太偏执、 2024-03-26 16:09 21阅读 0赞 ## python中的类,对象,成员方法,构造方法,**init**,**lt**,**le**,**eq** ## ### 定义方法 ### ![在这里插入图片描述][074e5517f7694bfc9177f3e3ded4358d.png] * class是关键字,表示要定义类了 * 类的属性,即定义在类中的变量(成员变量) * 类的行为,即定义在类中的函数(成员方法) 需要注意的是,在python里面没有私有成员,所以也是没有get,set方法,全是公有成员。 ### 例子演示 ### ### `__init__`(构造方法) ### 定义一个学生类,然后这个学生类具有学生的基本信息,比如,学号,姓名,性别,年龄,然后这个学生具有eating方法,这个方法会向屏幕打印,“I have eating”的语句。 现在根据上述需求进行代码编写。 定义类的代码, 这里主要需要注意的是,普通成员变量的定义方法,需要通过None进行初始化操作,然后还有python中的构造方法的写法,`__init__`通过这个方法进行构造方法,然后self,相当于c++里面的this指针 class Student: num = None age = None name = None sex = None def __init__(self, num, age, name, sex): self.num = num self.age = age self.name = name self.sex = sex def eating(self): print(self.name + " I have eating") 生成对象进行检验测试,这里演示的是,在python中如何定义对象。 if __name__=="__main__": student1 = Student(1, 23, "lihua", '男') student1.eating() student2 = Student(2, 25, "zhangsan", '男') student2.eating() 运行结果 ![在这里插入图片描述][8e0af42b77b44d46b08957ffc4563bb2.png] ### `__str__` 字符串方法 ### * 一般情况,这个是直接回打印出这个对象的地址 class Student: def __init__(self, name, age): self.name = name self.age = age if __name__=="__main__": stu = Student("李华", 11) print(stu) print(str(stu)) **运行结果** ![在这里插入图片描述][891fdf20115542b78c33ea8592d3c6b3.png] * 使用`__str__`之后,使用这个`__str__`后相当于,是java里面的toString方法。 class Student: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"student的类对象, name={ self.name}, age={ self.age}" if __name__=="__main__": stu = Student("李华", 11) print(stu) print(str(stu)) **运行结果** ![在这里插入图片描述][d9b9992235d040afa1cd9b355e59c1d5.png] ### `__lt__`小于符号比较方法 ### 这里演示python中自定义的,小于符号的编写 class Student: def __init__(self, name, age): self.name = name self.age = age def __lt__(self, other): return self.age < other.age if __name__=="__main__": stu1 = Student("李华", 11) stu2 = Student("张三", 12) print(stu1 > stu2) print(stu1 < stu2) **运行结果** 一般情况下对象之间不可以直接进行对比,但是可以通过编写对比规则来进行对比。 ![在这里插入图片描述][a63d8749df9f49158807efc50b4786c4.png] ### `__eq__`比较运算符实现方法 ### 演示代码,这里通过重载等于方法,来进行对两个对象的是否相等进行判断功能。 class Student: def __init__(self, name, age): self.name = name self.age = age def __eq__(self, other): return self.age == other.age if __name__=="__main__": stu1 = Student("李华", 11) stu2 = Student("张三", 12) print(stu1 == stu2) print(stu1 != stu2) **运行结果** ![在这里插入图片描述][15c063caef494ff8847551c3f87831da.png] ### `__le__`小于等于比较符号方法 ### 这个就交给大家来演示了,就是上面的两个的结合。 [074e5517f7694bfc9177f3e3ded4358d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/e318d7b129c44a91bb71000367f49855.png [8e0af42b77b44d46b08957ffc4563bb2.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/a61a38a02aad44fca0b65a559524b64e.png [891fdf20115542b78c33ea8592d3c6b3.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/ffeef39149c143eeacc422a52850ddf0.png [d9b9992235d040afa1cd9b355e59c1d5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/c18f4e95dc384f168fb5023dacba4bb6.png [a63d8749df9f49158807efc50b4786c4.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/21193ce6b7c74d4180db05abf7972111.png [15c063caef494ff8847551c3f87831da.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/26/4929def5d065438a87699484b4440a50.png
还没有评论,来说两句吧...