python中的类,对象,成员方法,构造方法,init,lt,le,eq
定义方法
- 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()
运行结果
__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))
运行结果
- 使用__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))
运行结果
__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)
运行结果
一般情况下对象之间不可以直接进行对比,但是可以通过编写对比规则来进行对比。
__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)
运行结果
__le__小于等于比较符号方法
这个就交给大家来演示了,就是上面的两个的结合。