From 3ed1c5d0e4018fc70012a6209a859a059f7127b5 Mon Sep 17 00:00:00 2001 From: zhang Date: Fri, 25 Mar 2022 00:11:34 +0800 Subject: =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oop/MethodTest.py | 42 +++++++++++++++++++++++++++++++++++++ oop/TestProperrty.py | 22 ++++++++++++++++++++ oop/__init__.py | 0 oop/dp/Decorator.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ oop/dp/__init__.py | 0 5 files changed, 123 insertions(+) create mode 100644 oop/MethodTest.py create mode 100644 oop/TestProperrty.py create mode 100644 oop/__init__.py create mode 100644 oop/dp/Decorator.py create mode 100644 oop/dp/__init__.py (limited to 'oop') diff --git a/oop/MethodTest.py b/oop/MethodTest.py new file mode 100644 index 0000000..67fdf57 --- /dev/null +++ b/oop/MethodTest.py @@ -0,0 +1,42 @@ + +from datetime import datetime + +class Test: + alias = 'wudaokou nash' + + @staticmethod + def static_mode(language): + print(f'static method, {Test.alias} codes in {language}') + + @classmethod + def class_mode(cls, language): + print(f'class method, {cls.alias} codes in {language}') + + +class Repr: + + def __init__(self, name): + self.name = name + + def __repr__(self): + return f'{self.__class__.__module__}.{self.__class__.__qualname__}(name={self.name})' + + def __str__(self): + return f'{self.name}' + + +if __name__ == '__main__': + t = Test() + t.static_mode('chinese') + t.class_mode('english') + + r = Repr('zhang') + print(r) + print(repr(r)) + print(str(r)) + + now = datetime.now() + print(now.__str__()) + print(now.__repr__()) + + diff --git a/oop/TestProperrty.py b/oop/TestProperrty.py new file mode 100644 index 0000000..de43e17 --- /dev/null +++ b/oop/TestProperrty.py @@ -0,0 +1,22 @@ + +class Screen(object): + @property + def width(self): + return self._width + + @width.setter + def width(self, value): + self._width = value + + @property + def height(self): + return self._height + + @height.setter + def height(self, value): + self._height = value + + @property + def resolution(self): + return self._height*self._width + diff --git a/oop/__init__.py b/oop/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/oop/dp/Decorator.py b/oop/dp/Decorator.py new file mode 100644 index 0000000..390935a --- /dev/null +++ b/oop/dp/Decorator.py @@ -0,0 +1,59 @@ + +from abc import ABCMeta, abstractmethod + + +class Person(metaclass=ABCMeta): + def __init__(self, name): + self._name = name + + @abstractmethod + def wear(self): + print('着装: ') + + +class Engineer(Person): + + def __init__(self, name, skill): + super().__init__(name) + self._skill = skill + + def wear(self): + print(f'我是 {self._name} 工程师, 我会 {self._skill}') + super().wear() + + +class ClothingDecorator(Person): + def __init__(self, person: Person): + self._decoratored = person + + def wear(self): + self._decoratored.wear() + self.decorate() + + @abstractmethod + def decorate(self): + pass + + +class CasualPantDecorator(ClothingDecorator): + def __init__(self, person: Person): + super().__init__(person) + def decorate(self): + print('一条卡其色裤子') + + +class BeltDecorator(ClothingDecorator): + def __init__(self, person: Person): + super().__init__(person) + + def decorate(self): + print('一条黑色腰带') + +if __name__ == '__main__': + tony = Engineer('Tony', '算法') + pant = CasualPantDecorator(tony) + belt = BeltDecorator(pant) + belt.wear() + + + diff --git a/oop/dp/__init__.py b/oop/dp/__init__.py new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3