Python 属性

8 投票
2 回答
5210 浏览
提问于 2025-04-15 18:23

根据以下代码,输出结果看起来有点奇怪。为什么“get in Base”只打印了一次?而“set in Base”根本没有打印出来?不过实际的获取和设置功能似乎都正常。到底是我漏掉了什么呢?

class Base:
    def __init__(self):
        self.s = "BaseStr"

    def getstr(self):
        print "get in Base"
        return self.s
    def setstr(self, s):
        print "set in Base"
        self.s = s
    str = property(getstr, setstr)

b = Base()
print b.str
b.str = "Foo"
print b.str

输出:

get in Base
BaseStr
Foo

2 个回答

0

每当你创建一个新的类时,记得要让它继承自object类型。

18

要让属性正常工作,你需要使用新式类。这意味着你需要让你的类从object这个基础类继承:

class Base(object):
    ...

撰写回答