python语法-面向对象(构造方法、魔术方法)
"""
构造方法:
python类可以使用:__init__()方法,称之为构造方法。
可以实现:
-在创建类对象时,会自动执行。
-在创建类对象时,将传入参数自动传递给__init__方法使用。
"""
# 演示使用构造方法对成员变量进行赋值
class Student:
# 当具有构造方法时,可以省略成员变量的书写(下面三行注释)
# name = None
# age = None
# tel = None
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
print("Student类创建了一个类对象")
stu = Student("周杰伦", 31, "18500006666")
print(stu.name)
print(stu.age)
print(stu.tel)
"""
案例解析:学生信息录入
"""
class Student:
name = None
age = None
site = None
def __init__(self, name, age, site):
self.name = name
self.age = age
self.site = site
print("该学生类对象创建成功!")
students = []
for num in range(10):
print(f"当前录入第{num + 1}位学生信息,总共需录入10位学生信息")
name = input("请输入学生姓名:")
age = int(input("请输入学生年龄:"))
site = input("请输入学生地址:")
student = Student(name, age, site)
students.append(student)
print(f"学生{num + 1}信息录入完成,信息为:【学生姓名:{student.name};年龄:{age};地址:{site}】")
print("录入成功!")
"""
魔术方法:
python的内置方法各有各自特殊的功能,称之为魔术方法,主要的魔术方法如下:
__init__: 构造方法
__str__: 字符创方法
__lt__: 小于、大于符号比较
__le__: 小于等于、大于等于符号比较
__eq__: ==符号比较
"""
class Student:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
# __str__魔术方法(用于输出对象内容)
def __str__(self):
"""
如果不写str魔术方法,则直接print(类对象)会返回地址,不会返会对象内容
:return: print(类对象)可以调用此方法,返回对象的相关内容
"""
return f"Student类对象,name:{self.name},age:{self.age}"
# __lt _ 魔术方法(小于比较方法)
def __lt__(self, other):
"""
可同时完成:小于符号和大于符号两种比较
:param other: 另一个类对象
:return: True or False
"""
return self.age < other.age
# __le__ 魔术方法(小于等于比较方法)
def __le__(self, other):
"""
可用于:<=、>=两种比较运算符
:param other: 另一个类对象
:return: True or False
"""
return self.age <= other.age
# __eq__ 魔术方法(等于比较方法)
def __eq__(self, other):
"""
可用于 == 比较运算符
:param other: 另一个类对象
:return: True or False
"""
return self.age == other.age
# 测试
stu1 = Student("周杰伦", 31)
stu2 = Student("凌俊杰", 36)
print(stu1)
print(str(stu1))
print(stu1 < stu2)
print(stu1 > stu2)
print(stu1 <= stu2)
print(stu1 >= stu2)
print(stu1 == stu2)
参考内容:
学习python基础第一阶段-有感而发
python语法-面向对象(类的基本使用)
黑马程序员-python基础