'str' object is not callable不知道错在哪了!


class User():
    """初始化个人信息"""

    def __init__(self, first_name, last_name,
                 sex='man', age=''):
        self.first = first_name
        self.last = last_name
        self.sex = sex
        self.age = age

    # 个人信息输出
    def all_name(self):
        print('\nName: ' +
              self.first.title(), self.last.title(), '\n' +
              'Sex: ' + self.sex + '\n' + 'age: ' + str(self.age))

    # 描述工作的方法
    def user_job(self, work):
        if self.sex == 'man':
            print('Mr. ' + self.first.title() + ' is a '
                  + work + ' .')
        else:
            print('Mrs. ' + self.first.title() + ' is a '
                  + work + ' .')

    # 工作年限显示
    def user_work_year(self, year):
        if self.sex == 'woman':
            print('Mrs. ' + self.first.title() +
                  ' has worked ' + str(year) + ' years old .')
        else:
            print('Mr. ' + self.first.title() +
                  ' has worked ' + str(year) + ' years old .')


class NewUser(User):
    # 初始化父类
    def __init__(self, first_name, last_name, sex='man', age='',
                 marry='y'):
        super().__init__(first_name, last_name,
                         sex='man', age='')
        self.marry = marry

    # 打印是否结婚信息
    def marry(self):
        if self.marry == 'yes':
            print('O\'good.')
        else:
            print('really?')


my_user = User('liu', 'hai', 'woman', '36')
my_user.all_name()
my_user.user_job('wife')
my_user.user_work_year(15)

new_user = NewUser('wang', 'hai', 'man', '40', 'yes')
new_user.all_name()
new_user.user_job('nurse')
new_user.user_work_year(3)
new_user.marry()

最后的继承类NewUser的调用marry()提示 'str' object is not callable。不知道哪里错了。希望指教!

你这里的类方法名和类属性名重复了,将其中任意一个改变即可

img


下面我改变垒方法名


class User():
    """初始化个人信息"""

    def __init__(self, first_name, last_name,
                 sex='man', age=''):
        self.first = first_name
        self.last = last_name
        self.sex = sex
        self.age = age

    # 个人信息输出
    def all_name(self):
        print('\nName: ' +
              self.first.title(), self.last.title(), '\n' +
              'Sex: ' + self.sex + '\n' + 'age: ' + str(self.age))

    # 描述工作的方法
    def user_job(self, work):
        if self.sex == 'man':
            print('Mr. ' + self.first.title() + ' is a '
                  + work + ' .')
        else:
            print('Mrs. ' + self.first.title() + ' is a '
                  + work + ' .')

    # 工作年限显示
    def user_work_year(self, year):
        if self.sex == 'woman':
            print('Mrs. ' + self.first.title() +
                  ' has worked ' + str(year) + ' years old .')
        else:
            print('Mr. ' + self.first.title() +
                  ' has worked ' + str(year) + ' years old .')


class NewUser(User):
    # 初始化父类
    def __init__(self, first_name, last_name, sex='man', age='',
                 marry='y'):
        super().__init__(first_name, last_name,
                         sex='man', age='')
        self.marry = marry

    # 打印是否结婚信息
    def marry1(self):
        if self.marry == 'yes':
            print('O\'good.')
        else:
            print('really?')


my_user = User('liu', 'hai', 'woman', '36')
my_user.all_name()
my_user.user_job('wife')
my_user.user_work_year(15)
new_user = NewUser('wang', 'hai', 'man', '40', 'yes')
new_user.all_name()
new_user.user_job('nurse')
new_user.user_work_year(3)
new_user.marry1()

img

有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

你再检查检查初始化那里

NewUser 初始化的属性有个marry 方法里也有个marry 会造成混乱 不要属性和方法用一样的