家里路由器、智能灯泡、摄像头越来越多,想让它们配合工作,光靠手机App可不够灵活。这时候,写点小程序就能派上用场。比如用Python写个控制中心,把每个设备当成一个“对象”来管理,代码清楚又好扩展。
什么是面向对象?就像给每个家电建档案
你家的智能插座和温控器,虽然功能不同,但都有“开关”和“状态”。在Python里,可以定义一个“设备”类,作为所有家电的模板:
class Device:
def __init__(self, name, ip):
self.name = name
self.ip = ip
self.is_on = False
def turn_on(self):
self.is_on = True
print(f"{self.name} 已开启")
def turn_off(self):
self.is_on = False
print(f"{self.name} 已关闭")
有了这个类,创建新设备就像填表格一样简单:
lamp = Device("客厅灯", "192.168.1.10")
router = Device("主路由", "192.168.1.1")
调用 lamp.turn_on(),屏幕上就显示“客厅灯已开启”,不用再翻半天App。
子类继承,让设备各司其职
灯能调亮度,空调能设温度,这些特殊功能可以在子类里加。比如从Device派生出Light类:
class Light(Device):
def __init__(self, name, ip, brightness=50):
super().__init__(name, ip)
self.brightness = brightness
def set_brightness(self, level):
self.brightness = level
print(f"{self.name} 亮度设为 {level}%")
现在这盏灯既有开关,也能调光:
smart_lamp = Light("卧室灯", "192.168.1.11")
smart_lamp.turn_on()
smart_lamp.set_brightness(80)
实际用起来:自动检测离线设备
家里网络不稳定时,总得一个个查设备是否在线。用面向对象的方式,可以统一处理:
import random
def check_status(device):
# 模拟网络检测
is_online = random.choice([True, True, True, False])
if not is_online:
print(f"⚠ {device.name}({device.ip}) 可能已离线")
else:
state = "开启" if device.is_on else "关闭"
print(f"✅ {device.name} 在线,当前状态:{state}")
把所有设备放进列表,一键巡检:
devices = [lamp, router, smart_lamp]
for d in devices:
check_status(d)
哪台连不上一眼就能看出来,比手动登录路由器后台快多了。
扩展方便,以后加设备不重写
明年买了智能窗帘,只要照着现有模式新建一个Curtain类,继承Device,加上open和close方法,立马就能接入原来的系统。代码结构清晰,改一处,处处都能用。
用Python面向对象的方式管理家庭网络,不只是写代码,更像是在搭建自家的数字管家。每个设备有身份、有行为,组合起来就是一套听话的小团队。