Python论坛  - 讨论区

标题:[python-chinese] [求助]在Python中如何动态创建一个函数

2007年01月15日 星期一 22:15

Mingzhe Huang archerzz在gmail.com
星期一 一月 15 22:15:41 HKT 2007

非常好的方案,谢谢!
顺便在请教一下,怎么利用Type对象创建Type对象描述的类的对象?

On 1/15/07, Can Xue <xuecan在gmail.com> wrote:
>
> 我的解决方案:
>
> def ImportModule(moduleName):
>     """Import and return a module from given module name.
>
>     @type moduleName: String
>     @param moduleName: The given module name.
>     @rtype: Module
>     @return: The imported module.
>     """
>     module = __import__(moduleName)
>     components = moduleName.split('.')
>     for component in components[1:]:
>         module = getattr(module, component)
>     return module
>
> def FromModuleImportObject(moduleName, objectName):
>     """Import and return an object from a given module name.
>
>     @type moduleName: String
>     @param moduleName: The given module name.
>     @type objectName: String
>     @param objectName: The given object name.
>     @rtype: Object
>     @return: The imported object.
>     """
>     module = ImportModule(moduleName)
>     return module.__getattribute__(objectName)
>
> 使用方法:
>
> try:
>     m = ImportModule('foo.bar')
>     o = FromModuleImportObject('foo.bar', 'foobar')
> except:
>     # do something you want
>     pass
>
> 2007/1/15, Mingzhe Huang <archerzz在gmail.com>:
> >
> > 问题是import后面的名字是在运行时才能得到的。请看下面:
> >
> > pluginString = """
> >
> > def hello():
> >    return 'hello'
> > """
> > print >> file('plugin.py', 'w'), pluginString
> > if os.paht.exists ('plugin.py'):
> >    import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错
> >    plugin.hello ()
> >
> > 貌似用eval是最快捷的,呵呵。等会我试试看刘鑫兄弟的方法。
> >
> > On 1/15/07, tocer < tocer.deng在gmail.com> wrote:
> > >
> > > 不知道这样行不行?
> > >
> > > pluginString = """
> > >
> > > def hello():
> > >    return 'hello'
> > > """
> > > print >> file('plugin.py', 'w'), pluginString
> > > if os.paht.exists('plugin.py '):
> > >    import plugin
> > >    plugin.hello()
> > >
> > >
> > > Mingzhe Huang wrote::
> > > > 但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。
> > > > 比如这样:
> > > > pluginString = "UserClass"
> > > > import pluginString #这句话显然目前不行
> > > > ob = UserClass()
> > > >
> > > > 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。
> > > > Java有classloader,不知道python除了eval,还有别的什么吗?
> > > >
> > > > On 1/14/07, tocer < tocer.deng在gmail.com > wrote:
> > > >>
> > > >> 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方
> > > >> 式处理插
> > > >> 件,可以参考 Ulipad 代码。
> > > >>
> > > >> Mingzhe Huang wrote::
> > > >> > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写
> > > >> > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。
> > > >> > Java里有classloader机制,可以载入编译好的class文件。我在想,python里
> > > >> 面应
> > > >> > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知
> > > >> 道还
> > > >> > 会有其它的吗?
> > > >> >
> > > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote:
> > > >> >>
> > > >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote:
> > > >> >> >
> > > >> >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好?
> > > >>
> > > >> --
> > > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > >> _______________________________________________
> > > >> python-chinese
> > > >> Post: send python-chinese在lists.python.cn
> > > >> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > >> Unsubscribe: send unsubscribe to
> > > python-chinese-request在lists.python.cn
> > > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > ------------------------------------------------------------------------
> > > >
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese在lists.python.cn
> > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> > > --
> > > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> >
> > --
> > Best Regards,
> >
> > Archer
> >
> > Ming Zhe Huang
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
>
> --
> 薛粲
>
> 有耕耘方能有收获,愿能与您顺心携手共成长。
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
Best Regards,

Archer

Ming Zhe Huang
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070115/4a14358a/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月15日 星期一 22:24

Can Xue xuecan在gmail.com
星期一 一月 15 22:24:29 HKT 2007

不用客气。
Type对象描述的类? 不太明白。

2007/1/15, Mingzhe Huang <archerzz在gmail.com>:
> 非常好的方案,谢谢!
> 顺便在请教一下,怎么利用Type对象创建Type对象描述的类的对象?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月15日 星期一 22:35

Yung-Yu Chen yungyuc在gmail.com
星期一 一月 15 22:35:53 HKT 2007

我猜你所謂「利用Type对象创建Type对象描述的类的对象」是要求下面的效果?

>>> class AType( object):
...  pass
...
>>> BType = AType
>>> print BType

>>> a = AType(); b = BType()
>>> print type(a), type(b)
 

另,關於動態匯入模組 (或套件),Python Library Reference 的說明就蠻清楚的了 (
http://docs.python.org/lib/built-in-funcs.html),而 Django 裡面有更多複雜的範例。

On 1/15/07, Mingzhe Huang <archerzz在gmail.com> wrote:
>
> 非常好的方案,谢谢!
> 顺便在请教一下,怎么利用Type对象创建Type对象描述的类的对象?
>
> On 1/15/07, Can Xue <xuecan在gmail.com> wrote:
> >
> > 我的解决方案:
> >
> > def ImportModule(moduleName):
> >     """Import and return a module from given module name.
> >
> >     @type moduleName: String
> >     @param moduleName: The given module name.
> >     @rtype: Module
> >     @return: The imported module.
> >     """
> >     module = __import__(moduleName)
> >     components = moduleName.split('.')
> >     for component in components[1:]:
> >         module = getattr(module, component)
> >     return module
> >
> > def FromModuleImportObject(moduleName, objectName):
> >     """Import and return an object from a given module name.
> >
> >     @type moduleName: String
> >     @param moduleName: The given module name.
> >     @type objectName: String
> >     @param objectName: The given object name.
> >     @rtype: Object
> >     @return: The imported object.
> >     """
> >     module = ImportModule(moduleName)
> >     return module.__getattribute__(objectName)
> >
> > 使用方法:
> >
> > try:
> >     m = ImportModule('foo.bar')
> >     o = FromModuleImportObject('foo.bar', 'foobar')
> > except:
> >     # do something you want
> >     pass
> >
> >  2007/1/15, Mingzhe Huang <archerzz在gmail.com>:
> > >
> > > 问题是import后面的名字是在运行时才能得到的。请看下面:
> > >
> > > pluginString = """
> > >
> > > def hello():
> > >    return 'hello'
> > > """
> > > print >> file('plugin.py', 'w'), pluginString
> > > if os.paht.exists ('plugin.py'):
> > >    import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错
> > >    plugin.hello ()
> > >
> > > 貌似用eval是最快捷的,呵呵。等会我试试看刘鑫兄弟的方法。
> > >
> > > On 1/15/07, tocer < tocer.deng在gmail.com> wrote:
> > > >
> > > > 不知道这样行不行?
> > > >
> > > > pluginString = """
> > > >
> > > > def hello():
> > > >    return 'hello'
> > > > """
> > > > print >> file('plugin.py', 'w'), pluginString
> > > > if os.paht.exists('plugin.py '):
> > > >    import plugin
> > > >    plugin.hello()
> > > >
> > > >
> > > > Mingzhe Huang wrote::
> > > > > 但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。
> > > > > 比如这样:
> > > > > pluginString = "UserClass"
> > > > > import pluginString #这句话显然目前不行
> > > > > ob = UserClass()
> > > > >
> > > > > 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。
> > > > > Java有classloader,不知道python除了eval,还有别的什么吗?
> > > > >
> > > > > On 1/14/07, tocer < tocer.deng在gmail.com > wrote:
> > > > >>
> > > > >> 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方
> > > > >> 式处理插
> > > > >> 件,可以参考 Ulipad 代码。
> > > > >>
> > > > >> Mingzhe Huang wrote::
> > > > >> > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写
> > > > >> > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。
> > > > >> > Java里有classloader机制,可以载入编译好的class文件。我在想,python里
> > > > >> 面应
> > > > >> > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知
> > > > >> 道还
> > > > >> > 会有其它的吗?
> > > > >> >
> > > > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote:
> > > > >> >>
> > > > >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote:
> > > > >> >> >
> > > > >> >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好?
> > > > >>
> > > > >> --
> > > > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > > >> _______________________________________________
> > > > >> python-chinese
> > > > >> Post: send python-chinese在lists.python.cn
> > > > >> Subscribe: send subscribe to
> > > > python-chinese-request在lists.python.cn
> > > > >> Unsubscribe: send unsubscribe to
> > > > python-chinese-request在lists.python.cn
> > > > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > ------------------------------------------------------------------------
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese
> > > > > Post: send python-chinese在lists.python.cn
> > > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > >
> > > > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > > --
> > > > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese在lists.python.cn
> > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> > >
> > > --
> > > Best Regards,
> > >
> > > Archer
> > >
> > > Ming Zhe Huang
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> >
> >
> >
> > --
> > 薛粲
> >
> > 有耕耘方能有收获,愿能与您顺心携手共成长。
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
>
> --
> Best Regards,
>
> Archer
>
> Ming Zhe Huang
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
with regards,
Yung-Yu Chen

yyc在seety.org
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070115/5a60a2e7/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月15日 星期一 22:57

Mingzhe Huang archerzz在gmail.com
星期一 一月 15 22:57:37 HKT 2007

Can Xue兄弟给的这个例子:
def FromModuleImportObject(moduleName, objectName):
    """Import and return an object from a given module name.

    @type moduleName: String
    @param moduleName: The given module name.
    @type objectName: String
    @param objectName: The given object name.
    @rtype: Object
    @return: The imported object.
    """
    module = ImportModule(moduleName)
    return module.__getattribute__(objectName)
这个方法返回的是一个'type'类型,所以需要实例化'type'类型。


On 1/15/07, Yung-Yu Chen <yungyuc在gmail.com> wrote:
>
> 我猜你所謂「利用Type对象创建Type对象描述的类的对象」是要求下面的效果?
>
> >>> class AType( object):
> ...  pass
> ...
> >>> BType = AType
> >>> print BType
> 
> >>> a = AType(); b = BType()
> >>> print type(a), type(b)
>  
>
> 另,關於動態匯入模組 (或套件),Python Library Reference 的說明就蠻清楚的了 (http://docs.python.org/lib/built-in-funcs.html)<http://docs.python.org/lib/built-in-funcs.html%29>,而
> Django 裡面有更多複雜的範例。
>
> On 1/15/07, Mingzhe Huang <archerzz在gmail.com > wrote:
> >
> > 非常好的方案,谢谢!
> > 顺便在请教一下,怎么利用Type对象创建Type对象描述的类的对象?
> >
> > On 1/15/07, Can Xue <xuecan在gmail.com> wrote:
> > >
> > > 我的解决方案:
> > >
> > > def ImportModule(moduleName):
> > >     """Import and return a module from given module name.
> > >
> > >     @type moduleName: String
> > >     @param moduleName: The given module name.
> > >     @rtype: Module
> > >     @return: The imported module.
> > >     """
> > >     module = __import__(moduleName)
> > >     components = moduleName.split('.')
> > >     for component in components[1:]:
> > >         module = getattr(module, component)
> > >     return module
> > >
> > > def FromModuleImportObject(moduleName, objectName):
> > >     """Import and return an object from a given module name.
> > >
> > >     @type moduleName: String
> > >     @param moduleName: The given module name.
> > >     @type objectName: String
> > >     @param objectName: The given object name.
> > >     @rtype: Object
> > >     @return: The imported object.
> > >     """
> > >     module = ImportModule(moduleName)
> > >     return module.__getattribute__(objectName)
> > >
> > > 使用方法:
> > >
> > > try:
> > >     m = ImportModule('foo.bar')
> > >     o = FromModuleImportObject('foo.bar', 'foobar')
> > > except:
> > >     # do something you want
> > >     pass
> > >
> > >  2007/1/15, Mingzhe Huang <archerzz在gmail.com>:
> > > >
> > > > 问题是import后面的名字是在运行时才能得到的。请看下面:
> > > >
> > > > pluginString = """
> > > >
> > > > def hello():
> > > >    return 'hello'
> > > > """
> > > > print >> file('plugin.py', 'w'), pluginString
> > > > if os.paht.exists ('plugin.py'):
> > > >    import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错
> > > >    plugin.hello ()
> > > >
> > > > 貌似用eval是最快捷的,呵呵。等会我试试看刘鑫兄弟的方法。
> > > >
> > > > On 1/15/07, tocer < tocer.deng在gmail.com> wrote:
> > > > >
> > > > > 不知道这样行不行?
> > > > >
> > > > > pluginString = """
> > > > >
> > > > > def hello():
> > > > >    return 'hello'
> > > > > """
> > > > > print >> file('plugin.py', 'w'), pluginString
> > > > > if os.paht.exists('plugin.py '):
> > > > >    import plugin
> > > > >    plugin.hello()
> > > > >
> > > > >
> > > > > Mingzhe Huang wrote::
> > > > > > 但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。
> > > > > > 比如这样:
> > > > > > pluginString = "UserClass"
> > > > > > import pluginString #这句话显然目前不行
> > > > > > ob = UserClass()
> > > > > >
> > > > > > 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。
> > > > > > Java有classloader,不知道python除了eval,还有别的什么吗?
> > > > > >
> > > > > > On 1/14/07, tocer < tocer.deng在gmail.com > wrote:
> > > > > >>
> > > > > >> 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方
> > > > > >> 式处理插
> > > > > >> 件,可以参考 Ulipad 代码。
> > > > > >>
> > > > > >> Mingzhe Huang wrote::
> > > > > >> > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写
> > > > > >> > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。
> > > > > >> > Java里有classloader机制,可以载入编译好的class文件。我在想,python里
> > > > > >> 面应
> > > > > >> > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知
> > > > > >> 道还
> > > > > >> > 会有其它的吗?
> > > > > >> >
> > > > > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote:
> > > > > >> >>
> > > > > >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote:
> > > > > >> >> >
> > > > > >> >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好?
> > > > > >>
> > > > > >> --
> > > > > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > > > >> _______________________________________________
> > > > > >> python-chinese
> > > > > >> Post: send python-chinese在lists.python.cn
> > > > > >> Subscribe: send subscribe to
> > > > > python-chinese-request在lists.python.cn
> > > > > >> Unsubscribe: send unsubscribe to
> > > > > python-chinese-request在lists.python.cn
> > > > > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > ------------------------------------------------------------------------
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese
> > > > > > Post: send python-chinese在lists.python.cn
> > > > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > > >
> > > > > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > > --
> > > > > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
> > > > > _______________________________________________
> > > > > python-chinese
> > > > > Post: send python-chinese在lists.python.cn
> > > > > Subscribe: send subscribe to
> > > > > python-chinese-request在lists.python.cn
> > > > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Best Regards,
> > > >
> > > > Archer
> > > >
> > > > Ming Zhe Huang
> > > >
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese在lists.python.cn
> > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > > Unsubscribe: send unsubscribe to
> > > > python-chinese-request在lists.python.cn
> > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > >
> > >
> > >
> > > --
> > > 薛粲
> > >
> > > 有耕耘方能有收获,愿能与您顺心携手共成长。
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> >
> >
> >
> > --
> > Best Regards,
> >
> > Archer
> >
> > Ming Zhe Huang
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
>
> --
> with regards,
> Yung-Yu Chen
>
> yyc在seety.org
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
Best Regards,

Archer

Ming Zhe Huang
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070115/c06559aa/attachment-0001.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月16日 星期二 17:03

ygao ygao2004在gmail.com
星期二 一月 16 17:03:10 HKT 2007

On 1/15/07, 头太晕 <torrycn在gmail.com> wrote:
>
>
>
> 2007/1/15, Mingzhe Huang <archerzz在gmail.com>:
> >
> > 问题是import后面的名字是在运行时才能得到的。请看下面:
> >
> > pluginString = """
> >
> > def hello():
> >    return 'hello'
> > """
> > print >> file('plugin.py', 'w'), pluginString
> > if os.paht.exists ('plugin.py'):
> >    import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错
> >    plugin.hello ()
>
>
> 此人钻进牛角尖儿了....
>

错,这不是钻牛角尖!

_______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
※※※※※※※※※※※※※※※※※※※※※※※※
My blog:  http://blog.donews.com/ygao
Forum    http://groups.google.com/group/python_study
※※※※※※※※※※※※※※※※※※※※※※※※
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070116/0d6d454f/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月21日 星期日 15:24

jian hui zheng mayapainter在gmail.com
星期日 一月 21 15:24:23 HKT 2007

¿´²»¶®¸÷λ´óÅ£ÔÚ½²Ê²Ã´....²»ÖªµÀÏÂÃæÕâÖÖ·½·¨ÊDz»ÊÇÒ²¿ÉÒÔ½Ð×ö¶¯Ì¬´´½¨º¯Êý..
>>> class A:
...     pass
...
>>> a = A()
>>> def B():
...     print "5"
...
>>> a.show = B
>>> a.show

>>> a.show()
5
>>>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070121/a7cf6501/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月21日 星期日 17:29

tocer tocer.deng在gmail.com
星期日 一月 21 17:29:27 HKT 2007

你这个叫“动态改变函数(类方法)”也许更合适。

jian hui zheng wrote::
> 看不懂各位大牛在讲什么....不知道下面这种方法是不是也可以叫做动态创建函数..
>>>> class A:
> ...     pass
> ...
>>>> a = A()
>>>> def B():
> ...     print "5"
> ...
>>>> a.show = B
>>>> a.show
> 
>>>> a.show()
> 5

-- 
Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月21日 星期日 19:45

swordsp sparas2006在gmail.com
星期日 一月 21 19:45:15 HKT 2007

On 1/21/07, tocer <tocer.deng at gmail.com> wrote:
> 你这个叫"动态改变函数(类方法)"也许更合适。
>

没有改变类(A)方法,只改变了对象(a)的方法

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号