gpt4 book ai didi

python:我可以将字符串格式化运算符与类的 getter 方法一起使用吗?

转载 作者:行者123 更新时间:2023-12-01 06:09:05 24 4
gpt4 key购买 nike

我想做这样的事情:

class Foo(object):
def __init__(self, name):
self._name = name
self._count = 0
def getName(self):
return self._name
name = property(getName)
def getCount(self):
c = self._count
self._count += 1
return c
count = property(getCount)
def __repr__(self):
return "Foo %(name)s count=%(count)d" % self.__dict__

但这不起作用,因为 namecount 是带有 getter 的属性。

有没有办法解决这个问题,以便我可以使用带有命名参数的格式字符串来调用 getter?

最佳答案

只需将其更改为不使用 self.__dict__ 即可。您必须将 namecount 作为属性来访问,而不是尝试通过其属性绑定(bind)到的名称来访问它们:

class Foo(object):
def __init__(self, name):
self._name = name
self._count = 0
def getName(self):
return self._name
name = property(getName)
def getCount(self):
c = self._count
self._count += 1
return c
count = property(getCount)
def __repr__(self):
return "Foo %s count=%d" % (self.name, self.count)

然后使用:

>>> f = Foo("name")
>>> repr(f)
'Foo name count=0'
>>> repr(f)
'Foo name count=1'
>>> repr(f)
'Foo name count=2'

编辑:您仍然可以使用命名格式,但必须更改方法,因为您无法通过所需的名称访问属性:

def __repr__(self):
return "Foo %(name)s count=%(count)d" % {'name': self.name, 'count': self.count}

如果你重复一些事情和/或有很多事情,这可能会更好,但它有点愚蠢。

关于python:我可以将字符串格式化运算符与类的 getter 方法一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com