在某些情况下,我想在类创建时使用实例方法。
我只想在权限列表中使用self。这是我的问题
但它不起作用。是解决这个问题的一些方法吗?
class PermissionChecker(object):
# how to use self in class create time.
permissions = [self.is_superuser(), self.is_god()]
def is_superuser(self):
# use self.property just like self.name...
return True
def is_god(self):
return True
class Child(PermissionChecker):
permissions = PermissionChecker.permissions + [self.is_coder(),]
def is_coder(self):
return True
答案 0 :(得分:2)
看起来您将attribute
这个词与property
混淆了;你不能在类定义本身中使用self
,它只能用于方法。
我认为您正在寻找property
descriptor:
class PermissionChecker(object):
@property
def permissions(self):
return [self.is_superuser(), self.is_god()]
def is_superuser(self):
# use self.property just like self.name...
return True
def is_god(self):
return True
使用property
(以上用作@
装饰器)将方法转换为属性:
>>> pcheck = PermissionChecker()
>>> pcheck.permissions
[True, True]
每次在实例上访问permissions
属性时,都会调用.permissions
方法。
或者,在__init__
初始值设定项中设置列表:
class PermissionChecker(object):
def __init__(self):
self.permissions = [self.is_superuser(), self.is_god()]
def is_superuser(self):
# use self.property just like self.name...
return True
def is_god(self):
return True
答案 1 :(得分:0)
看起来您正在尝试提供房产。这可以这样做:
class PermissionChecker(object):
def _get_permissions(self):
return [self.is_superuser(), self.is_god()]
permissions = property(_get_permissions)
def is_superuser(self):
# use self.property just like self.name...
return True
def is_god(self):
return True