如何在Python类中将成员函数作为成员变量访问?

1 投票
4 回答
4663 浏览
提问于 2025-04-16 23:40

我有一个类:

class Foo():
    def bar(name):
        return something

我想让

foo = Foo()
foo.name 

返回的结果和 foo.bar('name') 一样。这样做可以吗?

4 个回答

0

你的类应该有一个属性来存储名字。

试试看这个

#!/usr/bin/python

class Foo:
  def __init__(self):
    self.name = ''

  def bar(self, name):
    self.name = name
    return "name via bar(): %s" % name


f = Foo()
print f.bar("Jackson")
print f.name
1

根据你现在的描述,name 只在函数 bar 的范围内存在,所以 Foo 不能直接访问它,除非你把它存储在 Foo 的范围内。最简单的解决办法就是在 Foo 里创建一个叫 name 的成员变量,然后在 bar 里给它赋值。

class Foo():
    def __init__(self):
        self.name = None

    def bar(self, name):
        self.name = name
        return something
3

如果这个属性不存在的话,它会自动使用 bar

class Foo(object):
    def bar(self, name):
        return name
    def bar2(self, attr, value):
        print attr, value
    def __getattr__(self, attr):
        return self.bar(attr)
    def __setattr__(self, attr, value):
        self.bar2(attr, value)
foo = Foo()
print foo.name
foo.name = 'not name'

撰写回答