如何判断最后一个函数是否在 class 中被调用:Python
How to tell if the last function was called in a class: Python
我有一个 Python class 类似于以下内容:
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_sentence'
函数在所有必需的函数完成后 仅 自动调用。 'final_sentence'函数不一定是return一个字符串,它可能是一个整数或者列表。我不确定是否可以识别最后调用的函数?
例如:
s = BuildSentence("Hello")
answer = s.name("Foo").age(40)
应该'do_something_with':
Hello; my is Foo; I am 40 years old.
将最后一个方法的名称更改为__str__
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)
致电
s = BuildSentence("Hello")
s.name("Foo")
s.age(50)
s.surname(50)
print( s )
输出
Hello; my name is Foo; I am 50 years old; my surname is 50.
您可以使用 __str__
-方法,当需要字符串时会自动调用该方法。
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.
我有一个 Python class 类似于以下内容:
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_sentence'
函数在所有必需的函数完成后 仅 自动调用。 'final_sentence'函数不一定是return一个字符串,它可能是一个整数或者列表。我不确定是否可以识别最后调用的函数?
例如:
s = BuildSentence("Hello")
answer = s.name("Foo").age(40)
应该'do_something_with':
Hello; my is Foo; I am 40 years old.
将最后一个方法的名称更改为__str__
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)
致电
s = BuildSentence("Hello")
s.name("Foo")
s.age(50)
s.surname(50)
print( s )
输出
Hello; my name is Foo; I am 50 years old; my surname is 50.
您可以使用 __str__
-方法,当需要字符串时会自动调用该方法。
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.