1、构造方法得名称为__init__
2、构造方法的作用:
- 构建类对象的时候会自动运行
- 构建按类对象的传参会传递给构造方法,借此特征可以给成员变量赋值
3、注意事项:构造方法不要忘记self关键字,在方法内使用成员变量需要使用self函数
class Student:
name = None
gender = None
age = None
def __init__(self, name, gender, age):
self.name = name
self.age = age
self.gender = gender
print("创建成功")
stu = Student("周杰伦", 2, 22)
python类中的魔术方法
class Student:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
print("创建成功")
# 类似于java的tostring方法,这样print(stu)输出时不会输出student的地址,而是输出内容
def __str__(self):
return f"Student对象中{self.name},{self.age}"
# 大于或者小于的判断
def __lt__(self, other):
print("1")
return self.age < other.age
# 小于等于判断
def __le__(self, other):
print("2")
return self.age <= other.age
# 等于判断
def __eq__(self, other):
print("3")
return self.age == other.age
stu1 = Student("周杰伦", 2)
stu2 = Student("林俊杰", 18)
print(stu1 < stu2)
1、继承
语法:class 类名(父类1,父类2、、、)
子类构建类的对象可以,有自己的成员变量和成员方法
使用父类的成员变量和成员方法。
2、单继承和多继承
- 单继承:一个类继承另一个类
- 多继承:一个类继承多个类,按照顺序从左向右依次继承;多继承中如果父类有同名的方法或者属性,先继承的优先级高于后继承。
3、pass关键字的作用:保证程序不出错,保持类的完整性,表示无内容,空的意思
复写父类中的成员和方法
在子类中如何调用父类成员
- 方式一:调用父类成员
- 调用成员变量:父类名.成员变量
- 使用成员方法:父类名.成员方法(self)
- 方式二:使用super()调用父类成员
- 使用成员变量:super().成员变量
- 使用成员方法:super().成员方法()
class Phone:
id = None
producer = "itcast"
def call(self):
print("5g")
class Myphone(Phone):
producer = "iphone"
def call(self):
Phone.call(self)
super().call()
print("6g")
a = Myphone()
print(a.producer)
a.call()
变量的类型注解
# 基础数据类型注解
import json
import random
var1: int = 10
var2: str = "hello"
var3: bool = True
# 类对象类型注解
class Student:
pass
stu: Student = Student()
# 基础容器类型注解
my_list: list = [1, 2, 3]
my_tuple: tuple = (1, 2, 3)
my_dict: dict = {"itheima": 666}
# 容器类型详细注解
var4 = random.randint(1, 10) # type:int
var5 = json.loads('{"name":"zhangsan"}') # type:dict[str,str]
函数和方法类型注解
# 对形参类型进行注解
def add(x: int, y: int):
return x + y
# 对返回值进行类型注解
def func(data: list) -> list:
return data
print(func(1))
Union联合类型注解
# Union联合类型注解
from typing import Union
my_list: list[Union[int, str]] = [1, 2, "itheima", "dasdasd"]
def func(data: Union[int, str]) -> Union[int, str]:
pass
func()
多态
- 多态指的是,同一个行为,使用不同的对象获得不同的状态。如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态;
- 抽象类:包含抽象方法的类,称之为抽象类。抽象方法指的是:没有具体实现的方法(pass)称之为抽象方法;
- 抽象类的作用:用作与顶层设计,以便于子类做具体实现。也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法。
# 多态
class AC: # 这是一个抽象类,无法使用里面的方法,需要通过继承来使用
def cool_wind(self):
pass
def hot_wind(self):
pass
def swing_l_r(self):
pass
class MeiDi(AC):
def cool_wind(self):
print("美的制冷")
def hot_wind(self):
print("美的炙热")
def swing_l_r(self):
print("美的摆风")
class GeLi(AC):
def cool_wind(self):
print("格力制冷")
def hot_wind(self):
print("格力炙热")
def swing_l_r(self):
print("格力摆风")
def make_cool(ac: AC):
ac.cool_wind()
meidi = MeiDi()
geli = GeLi()
make_cool(meidi)
make_cool(geli)