From e2f7c746627c9901a13a1db341e8aee65544fa3c Mon Sep 17 00:00:00 2001 From: yinkanglong Date: Tue, 3 Aug 2021 20:12:46 +0800 Subject: [PATCH] note --- Python/abc实现多态.md | 142 +++++++++++++++++++++++++++++ 工作日志/2021年7月16日-今日计划.md | 10 +- 工作日志/2021年7月24日-今日计划.md | 4 +- 工作日志/2021年7月28日-今日计划.md | 1 - 工作日志/2021年7月31日-西部分享.md | 11 --- 工作日志/2021年8月7日-电话分享.md | 50 ++++++++++ 工作日志/2021年8月7日.-电话分享md | 37 -------- 7 files changed, 199 insertions(+), 56 deletions(-) create mode 100644 Python/abc实现多态.md delete mode 100644 工作日志/2021年7月28日-今日计划.md create mode 100644 工作日志/2021年8月7日-电话分享.md delete mode 100644 工作日志/2021年8月7日.-电话分享md diff --git a/Python/abc实现多态.md b/Python/abc实现多态.md new file mode 100644 index 00000000..bc273e79 --- /dev/null +++ b/Python/abc实现多态.md @@ -0,0 +1,142 @@ +## 多态的含义 +* 多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。 + +``` +# 动物类 都有名字这个属性 和吃这个方法 +class Animal(object): + def __init__(self,name): + self.name=name + def eat(self): + print(self.name+"吃1111111111111111") + +# 让定的猫这个属性去继承动这个方法 + +class Cat(Animal): + def __init__(self, name): + # self.name=name + super(Cat, self).__init__(name) + + +# 让mouse去继承动物这个类 +class Mouse(Animal): + def __init__(self,name): + + #self.name=name + super(Mouse,self).__init__(name) + +# 定义一个人类可以喂任何动物 +tom=Cat("tom") +# 创建老鼠 +jerry=Mouse("jerry") + +tom.eat() +jerry.eat() + + +``` + + +## 多态实现 +``` +import abc ( metaclass=abc.ABCMeta) +``` + +* Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。ABC是Abstract Base Class的缩写 + +### @abc.abstractmethod装饰器 + +* 加上@abc.abstractmethod装饰器后严格控制子类必须实现这个方法 +``` +class C: + __metaclass__ = ABCMeta + @abstractmethod + def my_abstract_method(self, ...): +``` +```py +import abc +class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物 + @abc.abstractmethod # 上述代码子类是约定俗称的实现这个方法,加上@abc.abstractmethod装饰器后严格控制子类必须实现这个方法 + def talk(self): + raise AttributeError('子类必须实现这个方法') + + +class People(Animal): # 动物的形态之一:人 + def talk(self): + print('say hello') + + +class Dog(Animal): # 动物的形态之二:狗 + def talk(self): + print('say wangwang') + + +class Pig(Animal): # 动物的形态之三:猪 + def talk(self): + print('say aoao') + + +peo2 = People() +pig2 = Pig() +d2 = Dog() + +peo2.talk() +pig2.talk() +d2.talk() +``` +### @abc.abstractproperty() + +表明一个抽象属性 + +```py +class C: + __metaclass__ = ABCMeta + @abstractproperty + def my_abstract_property(self): +``` + +### abc.ABCMeta + +这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。 + + +```py +from abc import ABCMeta + +class MyABC: + __metaclass__ = ABCMeta + +MyABC.register(tuple) + +assert issubclass(tuple, MyABC) +assert isinstance((), MyABC) +``` +上面这个例子中,首先生成了一个MyABC的抽象基础类,然后再将tuple变成它的虚拟子类。然后通过issubclass或者isinstance都可以判断出tuple是不是出于MyABC类。 + +也可以通过复写__subclasshook__(subclass)来实现相同功能,它必须是classmethod +``` +class Foo(object): + def __getitem__(self, index): + ... + def __len__(self): + ... + def get_iterator(self): + return iter(self) + +class MyIterable: + __metaclass__ = ABCMeta + + @abstractmethod + def __iter__(self): + while False: + yield None + + def get_iterator(self): + return self.__iter__() + + @classmethod + def __subclasshook__(cls, C): + if cls is MyIterable: + if any("__iter__" in B.__dict__ for B in C.__mro__): + return True + return NotImplemented +``` \ No newline at end of file diff --git a/工作日志/2021年7月16日-今日计划.md b/工作日志/2021年7月16日-今日计划.md index c021ecf7..363ea449 100644 --- a/工作日志/2021年7月16日-今日计划.md +++ b/工作日志/2021年7月16日-今日计划.md @@ -4,10 +4,10 @@ * [x] FedRep联邦表示学习、本地个性化模型 * [x] FLmeta 联邦元学习 * [x] MAML 元学习 - * [ ] Deeplearning - * [ ] Federated Learning - * [ ] FedFMC - * [ ] On the coverage - * [ ] Personality + * [x] Deeplearning + * [x] Federated Learning + * [x] FedFMC + * [x] On the coverage + * [x] Personality ## 总结 \ No newline at end of file diff --git a/工作日志/2021年7月24日-今日计划.md b/工作日志/2021年7月24日-今日计划.md index c857ed23..ee7c36fb 100644 --- a/工作日志/2021年7月24日-今日计划.md +++ b/工作日志/2021年7月24日-今日计划.md @@ -3,8 +3,8 @@ ### 就业 -- [ ] LeetCode一道困难题。10.00-12.00 -- [ ] C++基础知识看完。8.00-10.00 +- [x] LeetCode一道困难题。10.00-12.00 +- [x] C++基础知识看完。8.00-10.00 diff --git a/工作日志/2021年7月28日-今日计划.md b/工作日志/2021年7月28日-今日计划.md deleted file mode 100644 index d01fe1c7..00000000 --- a/工作日志/2021年7月28日-今日计划.md +++ /dev/null @@ -1 +0,0 @@ -## 任务 diff --git a/工作日志/2021年7月31日-西部分享.md b/工作日志/2021年7月31日-西部分享.md index 49f8d026..1bf14351 100644 --- a/工作日志/2021年7月31日-西部分享.md +++ b/工作日志/2021年7月31日-西部分享.md @@ -43,14 +43,3 @@ - -## “电话” -* 科幻,源于未知的浪漫。 - -* 门。一扇门。人们总在赋予它更多的含义。刚开始,打开这扇门,你能听到电话线另外一段的声音,再后来,可能听到来自更遥远的声音,甚至是千里之外的影像图片。基于这种门的思路,越来越多的人,想要通过这扇门看到更多的东西。像现在手机上已经可以传递货币,可以传递爱情,但究其本质还是一种数据。而科幻无非基于两点,空间上的延展与时间上的穿梭。 -* 人们希望通过这扇门能够传递物质,实现瞬间的转移,也想要通过这扇门跨越时间,向过去与未来发送信息。说不定真的可以实现,而且还可以很好的解决某个悖论。我们没有收到未来的信息,是因为我们还没有造出第一扇门,迎接未来的人。 -* 而科幻作品往往不是用来像漫威动画里那种堆切科幻元素的现代社会情愫,而是在探讨某一科技出现之后的社会学问题。我觉得科幻作品中的科幻元素只是背景,而真正让人思考的是其中的人文社会变化。 - - - -* 我觉得我抛出的每一个观点都有很强的主观色彩,很容易出现矛盾和冲突。要讨论的可能还真的挺多。 \ No newline at end of file diff --git a/工作日志/2021年8月7日-电话分享.md b/工作日志/2021年8月7日-电话分享.md new file mode 100644 index 00000000..cdb89693 --- /dev/null +++ b/工作日志/2021年8月7日-电话分享.md @@ -0,0 +1,50 @@ +# 电话 + + +## 电话定义 + +* 一种通信工具、一种传输工具。端到端的通信模式。 + +## 电影 + +* 剧情介绍 +* “电话”功能 +* 电话对于电影剧情的作用以及电话意向的分析 + + +## 动漫 + +* 剧情介绍 +* “电话”功能 +* 电话对于电影剧情的作用以及电话意向的分析 +* 为什么选择电话 + + +## 小说 + +* 剧情介绍 +* “电话”功能 +* 电话对于电影剧情的作用以及电话意向的分析 +* 为什么选择电话 + + +## “科幻世界的电话”——通向异世界的大门 + + +## “科幻世界的电话”——融合尖端科技的设备(功能幻想) + + +## “科幻世界的电话”——形式变化 + + + +## “电话” +* 科幻,源于未知的浪漫。 + +* 门。一扇门。人们总在赋予它更多的含义。刚开始,打开这扇门,你能听到电话线另外一段的声音,再后来,可能听到来自更遥远的声音,甚至是千里之外的影像图片。基于这种门的思路,越来越多的人,想要通过这扇门看到更多的东西。像现在手机上已经可以传递货币,可以传递爱情,但究其本质还是一种数据。而科幻无非基于两点,空间上的延展与时间上的穿梭。 +* 人们希望通过这扇门能够传递物质,实现瞬间的转移,也想要通过这扇门跨越时间,向过去与未来发送信息。说不定真的可以实现,而且还可以很好的解决某个悖论。我们没有收到未来的信息,是因为我们还没有造出第一扇门,迎接未来的人。 +* 而科幻作品往往不是用来像漫威动画里那种堆切科幻元素的现代社会情愫,而是在探讨某一科技出现之后的社会学问题。我觉得科幻作品中的科幻元素只是背景,而真正让人思考的是其中的人文社会变化。 + + + +* 我觉得我抛出的每一个观点都有很强的主观色彩,很容易出现矛盾和冲突。要讨论的可能还真的挺多。 \ No newline at end of file diff --git a/工作日志/2021年8月7日.-电话分享md b/工作日志/2021年8月7日.-电话分享md deleted file mode 100644 index 02593793..00000000 --- a/工作日志/2021年8月7日.-电话分享md +++ /dev/null @@ -1,37 +0,0 @@ -# 电话 - - -## 电话定义 - -* 一种通信工具、一种传输工具。端到端的通信模式。 - -## 电影 - -* 剧情介绍 -* “电话”功能 -* 电话对于电影剧情的作用以及电话意向的分析 - - -## 动漫 - -* 剧情介绍 -* “电话”功能 -* 电话对于电影剧情的作用以及电话意向的分析 -* 为什么选择电话 - - -## 小说 - -* 剧情介绍 -* “电话”功能 -* 电话对于电影剧情的作用以及电话意向的分析 -* 为什么选择电话 - - -## “科幻世界的电话”——通向异世界的大门 - - -## “科幻世界的电话”——融合尖端科技的设备(功能幻想) - - -## “科幻世界的电话”——形式变化 \ No newline at end of file