我想将变量传递到 str (类内部)以更改其输出。例如:
class Basic:
def __str__(self, specialCase=False):
if specialCase == True:
return "x"
return "y"
example = Basic()
print(example) #this prints y
print(example,specialCase=True) #this hopefully prints x?
有什么方法可以做到这一点吗?
我尝试使用
print(example(specialCase=True))
和
print(example,specialCase=True)
发送变量,但它们都只是响应错误。
无法将变量直接传递给
__str__
方法。
__str__
方法旨在仅采用
self
作为参数。当调用
print(example)
时,Python 隐式调用
example.__str__()
,而无需传递任何显式参数。
要实现想要的功能,可以执行以下操作:
- 使用实例变量:
可以创建一个在初始化或其他方法期间设置的实例变量,并让
__str__
方法基于该变量的值进行更改。
```python class Basic: def init (self, special_case=False): self.special_case = special_case
def __str__(self):
if self.special_case:
return "x"
return "y"
example = Basic() print(example) # 打印 "y"
example_special = Basic(special_case=True) print(example_special) # 打印 "x" ```
- 使用方法:
可以创建一个接受
specialCase
参数并返回所需字符串的方法。
```python class Basic: def str (self): return "y"
def get_string(self, special_case=False):
if special_case:
return "x"
return str(self) # 默认情况下使用 __str__ 的输出
example = Basic() print(example.get_string()) # 打印 "y" print(example.get_string(special_case=True)) # 打印 "x" ```
这两种方法都允许根据条件控制对象的字符串表示形式。选择哪种方法取决于的特定需求和代码结构。
标签:python,python-3.x,printing From: 78785867