Discussion:
[CPyUG] 请教py中怎样按名字来实例化类
devin
2010-07-03 15:09:53 UTC
Permalink
class ClassA():
pass
class ClassB():
pass
def fun(name):
classname = 'Class'+name
classinstance = classname()
return classinstance
请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类
就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpec
flyingzl
2010-07-03 15:19:48 UTC
Permalink
class ClassA():
def say(self):
print 'A.say'
class ClassB():
def say(self):
print 'B.say'
def fun(name):

data=globals()
clazz = 'Class'+name
clazz = data.get(clazz)
return clazz
a1=fun('A')
b1=fun('B')
a1().say()
b1().say()


2010-07-03



flyingzl



·¢ŒþÈË£º devin
·¢ËÍʱŒä£º 2010-07-03 23:10:16
ÊÕŒþÈË£º python-cn`CPyUG`»ªòþÓû§×é(ÖÐÎÄPyÓû§×é)
³­ËÍ£º
Ö÷Ì⣺ [CPyUG] ÇëœÌpyÖÐÔõÑù°ŽÃû×ÖÀŽÊµÀý»¯Àà

class ClassA():
pass
class ClassB():
pass
def fun(name):
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Shell Xu
2010-07-03 15:21:18 UTC
Permalink
cls = global().get(classname, None)
if cls is None: return None
return cls()
Post by devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÎÞÄÜÕßÎÞËùÇ󣬱¥Ê³¶øåÛÓΣ¬·ºÈô²»ÏµÖ®ÖÛ
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Jimmy Kuu
2010-07-04 09:34:51 UTC
Permalink
class ClassA(): def say(self): print 'A.say' class ClassB(): def say(self):
print 'B.say' def fun(name): return eval('Class' + name) a1 = fun('A') b1 =
fun('B') a1().say() b1().say()
Post by devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Jimmy Kuu
2010-07-04 09:36:39 UTC
Permalink
class ClassA():
def say(self):
print 'A.say'

class ClassB():
def say(self):
print 'B.say'

def fun(name):
return eval('Class' + name)

a1 = fun('A')
b1 = fun('B')
a1().say()
b1().say()
Post by Jimmy Kuu
print 'B.say' def fun(name): return eval('Class' + name) a1 = fun('A') b1 =
fun('B') a1().say() b1().say()
Post by devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-cn-/***@public.gmane.org
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Loading...