2004年01月07日 星期三 16:21
#-----socket.py--------文件1 from _socket import * import os, sys __all__ = ["getfqdn"] import _socket __all__.extend(os._get_exports_list(_socket)) …… #-------os.py-----------文件2 def _get_exports_list(module): try: return list(module.__all__) except AttributeError: return [n for n in dir(module) if n[0] != '_'] …… 目前的错误信息如下: Traceback (most recent call last): File "D:\Python22\lib\os.py", line 36, in _get_exports_list return list(module.__all__) AttributeError: 'module' object has no attribute '__all__' 有以下疑问: 1、import _socket后,有没有办法检查_socket是否加载成功? 2、怎么检查module有没有从文件1传到文件2中? 3、_socket是pyd文件,怎么知道它有那些属性? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040107/fbf80cad/attachment.htm
2004年01月07日 星期三 19:54
1. import _socket后,有没有办法检查_socket是否加载成功? _socket应该已经加载成功,否则会在加载这个模块的地方出现一个exception. 2. 怎么检查module有没有从文件1传到文件2中? 肯定已经传过去了. 3. _socket是pyd文件,怎么知道它有那些属性? 可以用dir(_socket)来看它有哪些属性.但是Python对象的属性不一定是在__dict__中的, 用定制__getattr__方法定义的属性用这种方法看不到. 从你给出的socket.py和os.py的内容看,应该没有问题._get_exports_list在_socket中没有找到__all__属性,应该产生一个AttributeError,然后会被下面的except语句捕捉住.奇怪的是你的例子中没有捕捉住.你能把你的这两个文件给我看看么? -----Original Message----- From: apple [mailto:liguoping at richisland.com] Sent: Wednesday, January 07, 2004 4:22 PM To: python-chinese at lists.python.cn Subject: [python-chinese] 请教一个传递module的问题 #-----socket.py--------文件1 from _socket import * import os, sys __all__ = ["getfqdn"] import _socket __all__.extend(os._get_exports_list(_socket)) …… #-------os.py-----------文件2 def _get_exports_list(module): try: return list(module.__all__) except AttributeError: return [n for n in dir(module) if n[0] != '_'] …… 目前的错误信息如下: Traceback (most recent call last): File "D:\Python22\lib\os.py", line 36, in _get_exports_list return list(module.__all__) AttributeError: 'module' object has no attribute '__all__' 有以下疑问: 1、import _socket后,有没有办法检查_socket是否加载成功? 2、怎么检查module有没有从文件1传到文件2中? 3、_socket是pyd文件,怎么知道它有那些属性? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040107/232249cb/attachment.html
2004年01月08日 星期四 10:11
他的问题奇怪在_get_exports_list已经有了一个try...except,在找不到__all__后, 应该会用dir来看module有哪些属性(去掉其中前缀为'_'的),而不是让这个AttributeError 冒出来. 这个人的信箱好像坏了(或者写错了),估计联系不上了. :-S > def _get_exports_list(module): > try: > return list(module.__all__) > except AttributeError: > return [n for n in dir(module) if n[0] != '_'] -----Original Message----- From: Dr. G Wu [mailto:guofu_wu at yahoo.co.uk] Sent: Thursday, January 08, 2004 4:45 AM To: Jacob Fan Subject: Re: [python-chinese] 请教一个传递module的问题 在你的DOS或XTERM下运行PYTHON 请看下面示范: cogw at puma downloads $ python Python 2.2.3 (#1, Dec 25 2003, 00:22:16) [GCC 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r3, propolice)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import _socket; >>> dir(_socket) ['AF_APPLETALK', 'AF_AX25', 'AF_BRIDGE', 'AF_INET', 'AF_INET6', 'AF_IPX', 'AF_NETROM', 'AF_PACKET', 'AF_ROSE', 'AF_UNIX', 'AF_UNSPEC', 'AF_X25', 'AI_CANONNAME', 'AI_NUMERICHOST', 'AI_PASSIVE', 'EAI_ADDRFAMILY', 等等... __all__不是__socket module的属性 On Wednesday 07 January 2004 11:54 am, Jacob Fan wrote: > 1. import _socket后,有没有办法检查_socket是否加载成功? > _socket应该已经加载成功,否则会在加载这个模块的地方出现一个exception. > 2. 怎么检查module有没有从文件1传到文件2中? > 肯定已经传过去了. > 3. _socket是pyd文件,怎么知道它有那些属性? > 可以用dir(_socket)来看它有哪些属性.但是Python对象的属性不一定是在__dict__中的, > 用定制__getattr__方法定义的属性用这种方法看不到. > > 从你给出的socket.py和os.py的内容看,应该没有问题._get_exports_list在_socket中没有找到__all >__属性,应该产生一个AttributeError,然后会被下面的except语句捕捉住.奇怪的是你的例子中没有捕捉住.你能把你的这两个 >文件给我看看么? > > -----Original Message----- > From: apple [mailto:liguoping at richisland.com] > Sent: Wednesday, January 07, 2004 4:22 PM > To: python-chinese at lists.python.cn > Subject: [python-chinese] 请教一个传递module的问题 > > > #-----socket.py--------文件1 > from _socket import * > import os, sys > __all__ = ["getfqdn"] > import _socket > __all__.extend(os._get_exports_list(_socket)) > …… > #-------os.py-----------文件2 > def _get_exports_list(module): > try: > return list(module.__all__) > except AttributeError: > return [n for n in dir(module) if n[0] != '_'] > …… > > 目前的错误信息如下: > Traceback (most recent call last): > File "D:\Python22\lib\os.py", line 36, in _get_exports_list > return list(module.__all__) > AttributeError: 'module' object has no attribute '__all__' > > 有以下疑问: > 1、import _socket后,有没有办法检查_socket是否加载成功? > 2、怎么检查module有没有从文件1传到文件2中? > 3、_socket是pyd文件,怎么知道它有那些属性? -- Dr. Ben Guofu Wu Software Engineer Icom Innovation GnuPG Public Key: http://www.geocities.com/wubante/doc/publicKey.txt
Zeuux © 2024
京ICP备05028076号