Python中文
首页
教程
问答
标签
搜索
登录
注册
Python导入模块类作为“type”进行评估时,当用作参数时
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我已经从外部模块显式导入了类。我可以创建这种类型的对象,但当用作参数时,即将类类型传递给方法时,该方法将类计算为“type”</p> <p>使用名称空间前缀也是不可解析的。该方法可以很好地计算python基类型,即传递int的值是int</p> <p>测试.py</p> <pre><code>import os import sys import math import time import traceback import datetime import argparse from i_factory_type import IFactoryType from example_factory_type import ExampleFactoryType from factory import Factory if __name__ == "__main__": obj = ExampleFactoryType() print(type(obj)) print(isinstance(obj, IFactoryType)) obj.make() factory = Factory() factory.register('123', ExampleFactoryType) </code></pre> <p>工厂.py</p> <pre><code>''' Polymorphic factory that creates IFactoryTypes with dispatching ''' from i_factory_type import IFactoryType ''' Implementation of factory ''' class Factory: def Factory(self): self.registry = dict() def register(self, i_id, i_type): print(isinstance(i_type, IFactoryType)) print(i_type.__class__) assert( isinstance(i_type, IFactoryType) ) self.unregister_type(i_id) self.registry[i_id] = staticmethod(i_type) def unregister(self, i_id): if i_is in self.registry: del self.registry[i_id] def clear(self): self.registery.clear() def make_object(self, i_id, *i_args): ret = None if i_id in self.registry: ret = self.registry[i_id](i_args) return ret </code></pre> <p>示例\工厂\类型.py</p> <pre><code>''' Base type for factory create method ''' from i_factory_type import IFactoryType ''' Interface for factory creation ''' class ExampleFactoryType(IFactoryType): @staticmethod def make(*i_args): print('factory make override') </code></pre> <p>工厂类型.py</p> <pre><code>''' Base type for factory create method ''' ''' Interface for factory creation ''' class IFactoryType: @staticmethod def make(*i_args): raise NotImplementedError('Must override factory type') </code></pre> <p>输出:</p> <pre><code><class 'example_factory_type.ExampleFactoryType'> True factory make override False <class 'type'> Traceback (most recent call last): File "test.py", line 19, in <module> factory.register('123', ExampleFactoryType) File "F:\code\factory.py", line 20, in register assert( isinstance(i_type, IFactoryType) ) AssertionError </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>类不是它的超类的实例<code>isinstance(ExampleFactoryType, IFactoryType)</code>将始终为false。这适用于ExampleFactoryType的<em>实例</em>(例如<code>obj</code>),但不适用于类本身</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
10 回答
我想从用户导入值,为此
8 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
8 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
2 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
10 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
3 回答
我想从第一个空lin开始解析文本文件
1 回答
我想从简历、简历中提取特定部分
7 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
7 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
2 回答
我想从网上搜集一些关于抵押贷款的数据
4 回答
我想从网站上删除电子邮件地址
3 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
7 回答
我想从网站中提取数据,然后将其显示在我的网页上
8 回答
我想从网页上提取统计数据。
6 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
2 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
1 回答
我想从课堂上打印字典里的键
8 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
3 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
3 回答