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

时间:2011-08-16 08:03:10

标签: python class

我上课了:

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

我希望

foo = Foo()
foo.name 

返回与foo.bar('name')相同的内容。有可能吗?

4 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

正如您现在所描述的那样,name仅存在于函数bar的范围内,因此Foo除非您将其存储在其范围内,否则无法直接访问它。最简单的解决方案是创建一个名为name的成员字段,并将其值设置为bar

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

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

答案 2 :(得分:0)

宣布你的班级:

class Foo:
    def bar(self, name):
        return 'something'

您可以将方法分配给属性。

foo = Foo()
foo.name = foo.bar

如果您愿意,可以在构造函数中执行此操作。

答案 3 :(得分: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