一、类的定义和使用
-
基本语法
class 类名
类的属性(成员变量)
类的行为(成员方法)
定义成员方法
def 方法名(self, 形参1,形参2...): # 调用时self可以不传入
方法体
class Student:
name = None
gender = None
nationality = None
age = None
def say_hi(self):
print(f"hello,my name is {self.name}")
def say_hi2(self, msg):
print(f"hello,my name is {self.name},{msg}")
stu = Student()
stu.name = "An yujin"
stu.say_hi()
stu.say_hi2("puppy puppy~")
-
面向对象的编程
设计一个类,基于类去创建对象,并使用对象来完成具体的工作
二、类方法
-
构造方法
Python类的构造方法:__init__()
- 在创建类对象(构造类)的时候,会自动执行
- 在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用
class Student:
# 成员变量的声明可以省略
name = None
gender = None
nationality = None
age = None
def __init__(self, name, gender, nationality, age):
self.name = name
self.gender = gender
self.nationality = nationality
self.age = age
print("Student类创建了一个类对象")
stu = Student("yujin", "girl", "korean", "20")
print(stu.name)
print(stu.gender)
print(stu.nationality)
print(stu.age)
-
魔术方法
__str__方法
直接print对象,输出的是内存地址。通过__str__方法,可以控制类转换为字符串的行为
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# __str__魔术方法
def __str__(self):
return f"name:{self.name}, age:{self.age}"
stu = Student("yujin", "20")
print(stu)
__lt__方法
直接对2个对象进行比较是不可以的,但是在类中发实现__lt__方法,即可完成小于符号(和大于符号)的比较
# __lt__魔术方法
def __lt__(self, other):
return self.age < other.age
stu1 = Student("yujin", 20)
stu2 = Student("gauel", 22)
print(stu1 < stu2)
注:__le__方法可用于<=,>=的比较
__eq__方法
不实现eq方法,对象之间可以比较,但是是比较内存地址。不同对象的内存地址不同,输出一定是false。
实现了eq方法,就可以按照自己的想法来决定2个对象是否相等了。
# __eq__魔术方法
def __eq__(self, other):
return self.age == other.age
stu1 = Student("yujin", 20)
stu3 = Student("rei", 20)
print(stu1 == stu3)