鱼C论坛

 找回密码
 立即注册
查看: 1945|回复: 1

[学习笔记] 类和对象-Ⅴ-Mixin

[复制链接]
发表于 2023-3-23 22:00:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> class Animal:
...         def __init__(self, name, age):
...                 self.name = name
...                 self.age = age
...
>>> class Animal:
...         def __init__(self, name, age):
...                 self.name = name
...                 self.age = age
...
>>> class Animal:
...         def __init__(self, name, age):
...                 self.name = name
...                 self.age = age
...         def say(self):
...                 print(f"我叫{self.name}, 今年{self.age}岁。")
...
>>> class Pig(Animal):
...         def special(self):
...                 print("我的技能是拱大白菜~~")
...
>>> P = Pig("大肠", 5)
>>> P.say()
我叫大肠, 今年5岁。
>>> P.special()
我的技能是拱大白菜~~
>>> class FlyMixin:
...         def fly(self):
...                 print("哦豁,我还会飞")
...
>>> class Pig(FlyMixin, Animal):
...         def special(self):
...                 print("我的技能是拱大白菜~~")
...
>>> p = Pig("大肠", 5)
>>> p.say()
我叫大肠, 今年5岁。
>>> p.fly()
哦豁,我还会飞
>>> p.special()
我的技能是拱大白菜~~

>>> class Displayer:
...         def display(self, message):
...                 print(message)
...
>>> class LoggerMixin:
...         def log(self, message, filename="logfile.txt"):
...                 with open(filename, "a") as f:
...                         f.write(message)
...         def display(self, message):
...                 super().display(message)
...                 self.log(message)
...
>>> class MySubClass(LoggerMixin, Displayer):
...         def log(self, message):
...                 super().log(message, filename="subclasslog.txt")
...
>>> subclass = MySubClass()
>>> subclass.display("This is a test.")
This is a test.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-29 09:31:15 | 显示全部楼层
请得透彻
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 00:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表