同名变量问题

9-8 权限:编写一个名为Privileges的类,它只有一个属性——privileges,其中存储了练习9-7所说的字符串列表。将方法show_privileges()移到这个类中。在Admin类中,将一个Privileges实例用作其属性。创建一个Admin实例,并使用方法show_privileges()来显示其权限

class User():
    def __init__(self,name,city):
        self.name=name
        self.city=city
    def show_users(self):
        print(self.name+" "+self.city)

class Privileges():
    def __init__(self,*set_privileges):
        self.set_privileges=set_privileges##注意此处①
    def show_privileges(self):
        print("privileges:")
        for i in self.set_privileges:
           print(i)

class Admin(User):
    def __init__(self,name,city):
        super().__init__(name,city)
        self.privileges=Privileges()##注意此处②

admin=Admin('xiaofang','wuxi')
admin.privileges.set_privileges=["can add post","can delete post"]##③
admin.show_users()
admin.privileges.show_privileges()

注意同名变量,③处因为admin中构造函数只有两个形参,privileges的值无法利用实参传递给形参

如果

class Privileges():
    def __init__(self,*set_privileges):
        self.set_privileges=set_privileges##注意此处①
    def show_privileges(self):
        print("privileges:")
        for i in self.set_privileges:
           print(i)

此处改为

class Privileges():
    def __init__(self):
        self.set_privileges=["can add post","can delete post","can ban user"]
    def show_privileges(self):
        print("privileges:")
        for i in self.set_privileges:
           print(i)

结果一样,在__inti__()方法中指定初始值后,无需为该属性提供初始值的形参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值