kelerbs 2021-12-21 16:07 采纳率: 50%
浏览 59
已结题

python:为什么用.title方法会导致unsupported operand type(s) for +: 'builtin_function_or_method' and 'str'错误

#原代码如下:

class Restaurant():
    """模拟餐厅"""
    def __init__(self,name,type):
        """初始化属性name和age"""
        self.name = name
        self.type = type
    def describe_restaurant(self):
        """介绍restaurant的信息"""
        print("restaurant的名字是"+self.name.title()+",类型是"+self.type)
    def open_restaurant(self):
        """表示餐厅正在营业"""
        print(self.name.title+"正在营业中。")
my_restaurant = Restaurant("伏羲十星","十星级酒店")
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()

#结果报错:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 12, in open_restaurant
TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'str'

#修改1:在def open_restaurant(self)时,删除print函数中self.name.title的.title,结果运行成功

class Restaurant():
    """模拟餐厅"""
    def __init__(self,name,type):
        """初始化属性name和age"""
        self.name = name
        self.type = type
    def describe_restaurant(self):
        """介绍restaurant的信息"""
        print("restaurant的名字是"+self.name.title()+",类型是"+self.type)
    def open_restaurant(self):
        """表示餐厅正在营业"""
        print(self.name+"正在营业中。")
my_restaurant = Restaurant("伏羲十星","十星级酒店")
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
>>> class Restaurant():
...     """模拟餐厅"""
...     def __init__(self,name,type):
...         """初始化属性name和age"""
...         self.name = name
...         self.type = type
...     def describe_restaurant(self):
...         """介绍restaurant的信息"""
...         print("restaurant的名字是"+self.name.title()+",类型是"+self.type)
...     def open_restaurant(self):
...         """表示餐厅正在营业"""
...         print(self.name+"正在营业中。")
...
>>> my_restaurant = Restaurant("伏羲十星","十星级酒店")
>>> my_restaurant.describe_restaurant()
restaurant的名字是伏羲十星,类型是十星级酒店
>>> my_restaurant.open_restaurant()
伏羲十星正在营业中。

#修改2:在def open_restaurant(self)时,用str函数强行把self.name.title换成string,结果失败

>>> class Restaurant():
...     """模拟餐厅"""
...     def __init__(self,name,type):
...         """初始化属性name和age"""
...         self.name = name
...         self.type = type
...     def describe_restaurant(self):
...         """介绍restaurant的信息"""
...         print("restaurant的名字是"+self.name.title()+",类型是"+self.type)
...     def open_restaurant(self):
...         """表示餐厅正在营业"""
...         print(str(self.name.title)+"正在营业中。")
...
>>> my_restaurant = Restaurant("伏羲十星","十星级酒店")
>>> my_restaurant.describe_restaurant()
restaurant的名字是伏羲十星,类型是十星级酒店
>>> my_restaurant.open_restaurant()
<built-in method title of str object at 0x000001FBB2493690>正在营业中。

我想请问一下,为什么用self.name.title会出错,以及同样是self.name.title,同样是print函数,describe_restaurant(self)就不受影响,而open_restaurant(self)就会出错?多谢啦~

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2021-12-21 16:22
    关注
    class Restaurant():
        """模拟餐厅"""
        def __init__(self,name,type):
            """初始化属性name和age"""
            self.name = name
            self.type = type
        def describe_restaurant(self):
            """介绍restaurant的信息"""
            print("restaurant的名字是"+self.name.title()+",类型是"+self.type)
        def open_restaurant(self):
            """表示餐厅正在营业"""
            print(self.name.title()+"正在营业中。")
    my_restaurant = Restaurant("伏羲十星","十星级酒店")
    my_restaurant.describe_restaurant()
    my_restaurant.open_restaurant()
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 cmd批处理参数如果含有双引号,该如何传入?
  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥100 某宝多次访问被拒绝,求解
  • ¥15 (标签-STM32|关键词-智能小车)