如何判断是否在类中调用了最后一个函数:Python
我有一个类似于以下内容的Python类:如何判断是否在类中调用了最后一个函数:Python,python,function,call,Python,Function,Call,我有一个类似于以下内容的Python类: class BuildSentence(object): def __init__(self, intro): self.sentence = intro def name(self, na): self.sentence += "; my name is %s" % (na) def surname(self, su): self.sentence += "; my surn
class BuildSentence(object):
def __init__(self, intro):
self.sentence = intro
def name(self, na):
self.sentence += "; my name is %s" % (na)
def surname(self, su):
self.sentence += "; my surname is %s" % (su)
def age(self, ag):
self.sentence += "; I am %d years old" % (ag)
def final_sentence(self):
self.sentence += "."
return do_something_with(self.sentence)
我只希望在所有必需的函数完成后自动调用最后一句“
函数。“final_-sensume”函数不一定返回字符串,它可以是整数或列表。我不确定是否可以识别最后调用的函数
例如:
s = BuildSentence("Hello")
answer = s.name("Foo").age(40)
应该“做点什么”:
Hello; my is Foo; I am 40 years old.
将最后一个方法的名称更改为
\uuuu str\uuu
class BuildSentence(object):
def __init__(self, intro):
self.sentence = intro
def name(self, na):
self.sentence += "; my name is %s" % (na)
def surname(self, su):
self.sentence += "; my surname is %s" % (su)
def age(self, ag):
self.sentence += "; I am %d years old" % (ag)
def __str__(self):
self.sentence += "."
return (self.sentence)
召唤
输出
Hello; my name is Foo; I am 50 years old; my surname is 50.
您可以使用
\uuuu str\uuuu
-方法,每当需要字符串时自动调用该方法
class BuildSentence(object):
def __init__(self, intro):
self.sentence = intro
self.templates = {
'name': "; my name is %s",
'surname': "; my surname is %s",
'age': "; I am %d years old",
}
def __getattr__(self, attr):
def set(value):
self.sentence += self.templates.pop(attr) % value
return self
return set
def __str__(self):
return self.sentence + '.'
例如:
>>> print(BuildSentence('Hello').name('Tim').age(45))
Hello; my name is Tim; I am 45 years old.
几乎可以肯定您有一个。您可以维护此权限的状态吗?为类指定一个返回最后一句的方法。为什么要为此使用类?为什么不使用一个简单的函数:
构建句子(介绍、姓名、姓氏、年龄)
?还要注意,您的方法不一致。。。如果print(s.nam姓氏(“Bar”)
应该按照您希望的方式工作,它必须返回str
。但是你希望能够链接s.name(“Foo”).age(50)
.name
必须返回self
。谢谢!这太棒了!
>>> print(BuildSentence('Hello').name('Tim').age(45))
Hello; my name is Tim; I am 45 years old.