【发布时间】:2012-04-03 04:14:25
【问题描述】:
看看这段代码:
class MyClass():
# Why does this give me "NameError: name 'self' is not defined":
mySelf = self
# But this does not?
def myFunction(self):
mySelf2 = self
基本上我想要一个类引用自身而不需要具体命名自己的方法,因此我希望 self 为该类工作,而不仅仅是方法/函数。我怎样才能做到这一点?
编辑: 重点是我试图从类本身内部引用类名,例如 self.class._name_ 这样类名就不会在类代码的任何地方硬编码,因此更容易重用代码。
编辑 2:根据我从以下答案中了解到的情况,我想做的事情是不可能的。我得另辟蹊径。任务放弃。
编辑 3:以下是我正在尝试做的具体操作:
class simpleObject(object):
def __init__(self, request):
self.request = request
@view_defaults(renderer='string')
class Test(simpleObject):
# this line throws an error because of self
myClassName = self.__class__.__name__
@view_config(route_name=myClassName)
def activateTheView(self):
db = self.request.db
foo = 'bar'
return foo
【问题讨论】:
-
可能你问的不是你要解决的真正问题,而是不相关的技术问题。根据您在下面提到的视图装饰器重新表述您的问题。装饰器不能访问类名,但它返回的函数可以。
-
是的,你是对的。以后我会尽量讲清楚。
-
我已经编辑了我的帖子以添加我的实际代码。
-
@yourfriendzak。
self将永远无法在方法之外调用。你想使用元类。你用的是哪个版本的python? -
我可以使用元类来获取类名吗?
标签: python