如何使用自我评价法()班级创建时间?

2024-10-02 00:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

在某些情况下,我希望在类创建时使用实例方法。你知道吗

我只想在权限列表中使用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

Tags: 实例方法selftruepermissionsreturnisuse
2条回答

看起来您混淆了术语attributeproperty;您不能在类定义本身中使用self,它只对方法可用。你知道吗

我想你在找^{} 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

看起来你想提供一处房产。可以这样做:

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

相关问题 更多 >

    热门问题