如何在Python类中将成员函数作为成员变量访问?
我有一个类:
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'