基于模板类去创建实体对象,使用对象完成功能开发。
封装表示的是,将现实世界事物的:
属性
行为
封装到类中,描述为:
成员变量
成员方法
私有成员:既然现实事物有不公开的属性和行为,那么作为现实事物在程序中映射的类,也应该支持。在类中提供仅供内部使用的属性和方法,而不对外开放。
定义私有成员的方式:
私有成员变量:变量名以__开头
私有成员方法:方法名以__开头
#设计一个类
class studet:
name = None
gender = None
age = None
native_place = None
#创建一个对象(类比生活中:打印一张登记表)
stu_1 = studet()
#对象属性进行赋值
stu_1.name = "wyx"
stu_1.gender = "女"
stu_1.age = "22"
stu_1.native_place = "中国"
#获取对象中记录的信息
print(stu_1.name)
print(stu_1.age)
print(stu_1.gender)
print(stu_1.native_place)
#设计一个闹钟类
class clock:
id = None
price = None
def ring(self):
import winsound
winsound.Beep(2000,3000)
#构建2个闹钟对象并让他工作
clock1 = clock()
clock1.id = "001"
clock1.price = 10
print(f"闹钟ID为{clock1.id},价格为{clock1.price}")
clock1.ring()
class phone:
__is_5g_enable = False
def __check_5g(self):
if self.__is_5g_enable:
print("5g开启")
else:
print("5g关闭,使用4g网络")
def call_by_5g(self):
self.__check_5g()
print("正在通话中")
PHONE = phone()
PHONE.call_by_5g()
class 类名(父类名):
类内容体
class phone:
IMEI = None
producer = "AS"
__is_5g_enable = False
def __check_4g(self):
print("4g开启")
class phone2023(phone):
face = "001"
def call_by_5g(self):
print("2024新功能")
PHONE = phone2023()
print(phone.producer)
PHONE.call_by_5g()
class 类名(父类1,父类2,....父类N):
类内容体
class NFC:
nfc_type = "第五代"
producer = "AS"
def read_card(self):
print("读卡")
def write_card(self):
print("写卡")
class remote: # 远程遥控
rc_type = "红外遥控"
def control(self):
print("红外遥控")
class My_phone(phone, NFC, remote):
pass
ph = My_phone()
ph.read_card()
ph.write_card()
ph.control()
子类继承父类的成员属性和成员方法后,如果对其"不满意",那么可以进行复写。
即:在子类中重新定义同名的属性或方法即可。
class phone():
IMEI = None
producer = "WYX"
def call_by_5g(self):
print("使用5g网络进行通话")
#定义子类,复写父类成员
class myphone(phone):
producer = "SXX"
def call_by_5g(self):
print("开启单核模式")
print("使用5g通话")
Phone = myphone()
Phone.call_by_5g()
print(Phone.producer)
一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员,如果需要使用被复写的父类的成员,需要特殊的调用方式:
方式1:
调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)
方式2:
使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()
class phone():
IMEI = None
producer = "WYX"
def call_by_5g(self):
print("使用5g网络进行通话")
#定义子类
class myphone(phone):
producer = "SXX"
def call_by_5g(self):
print("开启单核模式")
#方法1
# print(f"父类的厂商是:{phone.producer}") #父类的厂商,WYX
#方法2
print(f"父类的厂商,{super().producer}") #父类的厂商,WYX
phone.call_by_5g(self)
Phone = myphone()
Phone.call_by_5g()
print(Phone.producer)
基础语法: 变量:类型
var1:int = 10
var2:float = 0.1
var3:str = "wyx"
class student:
pass
stu : student = student()
list:list = [1,2,3]
tuple:tuple[int, str] = (1, "wyx")
#对形参进行类型注解
def add(x:int, y:int):
return x + y
#对返回值进行类型注解
def func(data :list) -> list:
return data
多态指的是 多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
class Animal:
def speak(self):
pass
class dog(Animal):
def speak(self):
print("wangwangwang")
class cat(Animal):
def speak(self):
print("miaomioamiao")
def noise(animal :Animal):
animal.speak()
DOG = dog()
CAT = cat()
noise(DOG)
noise(CAT) #wangwangwang
#miaomioamiao
包含抽象方法的类,称之为抽象类,没有具体实现的方法(pass)
配合多态,完成
抽象的父类设计
具体的子类实现
class AC:
def wind(self):
"制冷"
pass
def hot(self):
"制热"
pass
def swing(self):
"摆风"
pass
class media(AC):
def wind(self):
print("美帝制冷")
def hot(self):
print("美的制热")
def swing(self):
print("摆风")
class geli(AC):
def wind(self):
print("格力制冷")
def hot(self):
print("格力制热")
def swing(self):
print("格力摆风")
def make(ac: AC):
ac.wind()
media_ac = media()
geli_ac = geli()
make(media_ac)
make(geli_ac)
美帝制冷
格力制冷