在类中获取 f 字符串无效语法 [关闭]

Posted

技术标签:

【中文标题】在类中获取 f 字符串无效语法 [关闭]【英文标题】:Getting a f-string invalid syntax in class [closed] 【发布时间】:2022-01-23 21:59:47 【问题描述】:

我是一名 Python 初学者,正在 class 上做一个小作业。但我遇到了f-string: invalid syntax 的以下代码:

 class Restaurant:
     def __init__(self,res_name,cuisine_type):
         self.res_name = res_name
         self.cuisine_type = cuisine_type

     def describe_restaurant(self):
         """Describes the restaurant."""
         print(f"The name of the restaurant is self.res_name.title().")  #Getting error here
         print(f"The type of cuisine in this restaurant is self.cuisine_type.title().")

     def open_restaurant(self):
         """Describes whether the restaurant is open."""
         print(f"The self.name.title() is open.")

 restaurant = Restaurant("abc def","pqr")
 print(restaurant.res_name)
 print(restaurant.cuisine_type)
 restaurant.describe_restaurant()
 restaurant.open_restaurant()

请帮帮我。

【问题讨论】:

请同时发布错误信息。 错字:大括号末尾的尾随点。 【参考方案1】:

花括号中有一个尾随.。据说,您打算在他们之后拥有它:

def describe_restaurant(self):
    """Describes the restaurant."""
    print(f"The name of the restaurant is self.res_name.title().")
    # Here ------------------------------------------------------^
    print(f"The type of cuisine in this restaurant is self.cuisine_type.title().")
    # And here ------------------------------------------------------------------^

【讨论】:

其实代码有很多问题。去掉尾随点后,我得到了这个错误 AttributeError: 'Restaurant' object has no attribute 'name' 。这是因为在第 13 行调用了一个不存在的类属性【参考方案2】:

看起来你放错了一个点。而不是

print(f"The name of the restaurant is self.res_name.title().")

试试

 print(f"The name of the restaurant is self.res_name.title().")#Notice the  dot is moved out of the brackets.

另外,将下一行更改为

 print(f"The type of cuisine in this restaurant is self.cuisine_type.title().")#Again, I just moved the dot.
 

【讨论】:

以上是关于在类中获取 f 字符串无效语法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能在一个类中声明一个命名空间?

字符串向量 push_back 在类中失败

用函数名作为字符串将 std::function 包装在类中

我可以使一个正则表达式完全匹配一个类中的每个字符 - 即使字符在类中重复?

在类中使用未声明的标识符

在类中初始化NSString *指针的方法