BrightXiong 发表于 2023-3-23 22:00:53

类和对象-Ⅴ-Mixin

>>> 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.

match123_xbd 发表于 2023-3-29 09:31:15

请得透彻
页: [1]
查看完整版本: 类和对象-Ⅴ-Mixin