一、魔术方法之构造方法
1.介绍
__init__()
方法,称为构造方法- 在创建类对象(构造类)的时候,会自动执行
- 在创建类对象(构造类)的时候,将传入参数自动传递给
__init__
方法使用
2.示例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def description(self):
return f"My name is {self.name} and age is {self.age}"
Jack = Person("Jack", 20)
print(Jack.description())
二、魔术方法之字符串方法
1.介绍
__str()__
称为字符串方法- 当类对象被转换为字符串时,返回的内容
2.示例
# 没使用__str__方法
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
Jack = Student("Jack", 20)
print(Jack) # <__main__.Student object at 0x0000018792DE70E0>
print(str(Jack)) # <__main__.Student object at 0x0000018792DE70E0>
# 使用了__str__方法
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return self.name
Jack = Student("Jack", 20)
print(Jack) # <__main__.Student object at 0x0000018792DE70E0>
print(str(Jack)) # <__main__.Student object at 0x0000018792DE70E0>
三、魔术方法之小/大于符号比较方法
1.介绍
__lt__
:小于符号比较方法__gt__
:大于符号比较方法__le__
:小于等于符号比较方法__ge__
:大于等于符号比较方法- 实现
__lt__
方法后,可以实现小于符号和大于符号两种比较
2.示例
# 未实现比较方法
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack<Peter) # TypeError: '<' not supported between instances of 'Student' and 'Student'
# 实现比较方法
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
return self.age < other.age
Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack<Peter) # True
四、魔术方法之比较运算符实现方法
1.介绍
__eq__
:比较运算符实现方法- 不实现
__eq__
方法,对象之间可以比较,但是是比较内存地址,即不同对象==
比较一定是False
结果 - 实现了
__eq__
方法,就可以按照自己的想法来决定2个对象是否相等了
2.示例
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
return self.age == other.age
Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack==Peter) # False