将实例从超类移动到子类

时间:2019-07-10 12:34:28

标签: python python-3.x class oop methods

我正在制作一个可以建立用户的程序(我目前正在学习课程)。而且我可以创建两种类型的用户:User和Admin。

用户和管理员都可以使用其名字和姓氏,年龄和特权。 Admin是超类的子类,比普通用户具有更多特权。

我要做的是使普通用户成为Admin,基本上是将实例和创建的实例从User类迁移到Admin类。

我正在寻找这种问题,但找不到。

    """docstring for User"""
    def __init__(self, first_name, last_name, age, location):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.location = location
        self.privileges = [
            'can add post', 'can remove their post', 'can change their icon'
            ]

    def describe_user(self):
        print(f"First name: {self.first_name}")
        print(f"Last name: {self.last_name}")
        print(f"Age: {self.age}")
        print(f"Location: {self.location}")

    def greet_user(self):
        print(f"Hello, {self.first_name} {self.last_name}, good to see you!")

    def show_privileges(self):
        print("Privileges:")
        for privilege in self.privileges:
            print(f"- {privilege}")

class Admin(User):
    """docstring for Admin"""
    def __init__(self, first_name, last_name, age, location):
        super().__init__(first_name, last_name, age, location)
        self.privileges = [
            'can add post', 'can remove post', 'can ban user', 'can lock post'
            ]
    def show_privileges(self):
        print("Privileges:")
        for privilege in self.privileges:
            print(f"- {privilege}")


kaya = User('Kaya', 'Y', 20, 'Chicago')
jon = Admin('Jon', 'K', 17, 'NY')

jon.greet_user()
jon.describe_user()

jon.show_privileges()
print('\n')

kaya.greet_user()
kaya.describe_user()

kaya.show_privileges()

我将如何使kaya成为管理员?

EDIT_0:我要移动实例,而不是方法。

EDIT_1:我想添加

kaya.make_admin()

这将为实例kaya提供更多特权。

0 个答案:

没有答案