基本上,我一直在和班级一起工作,从Python速成课程这本书中了解他们,有两个问题我必须回答;第一个是关于制作一个程序来识别用户是否是管理员,如果他们是管理员,代码应该打印出来,他们有额外的特权,第二个代码是相同的,但我必须制作一个额外的类,称为特权,这是用户类中的一个属性。但是代码做了同样的事情(),它只是更干净
我的第一个代码(有效的代码!):
class User:
def __init__(self, first_name, last_name, address, phone_number):
self.first_name = first_name
self.last_name = last_name
self.full_name = first_name + " " + last_name
self.address = address
self.phone_number = phone_number
self.privileges = ["can add post", "can delete post", "can ban user"]
def describe_user(self):
print("\nName: " + self.full_name.title() +
"\nAddress: " + self.address.title() +
"\nphone_number: " + str(self.phone_number))
def greet_user(self):
print("\nGreetings " + self.first_name.title() + ".")
def show_privileges(self):
print()
if self == Admin:
for privilege in self.privileges:
print(privilege)
else:
print("Sorry but you are not the Admin." +
"\nYou have limited privileges.")
Admin = User('Nebojsa', 'Kukic', 'A box under the bridge', 353838935494)
Admin.show_privileges()
user_2 = User("Siobhan", "O'Neill", "66 The Hermitage", 353831681859)
user_2.show_privileges()
输出:
can add post
can delete post
can ban user
Sorry but you are not the Admin.
You have limited privileges.
如您所见,假设self在条件测试中等于Admin或user2,但由于我的另一段代码(不起作用的代码:'():
class Privileges:
def __init__(self):
self.user_privileges = ["can add post", "can delete post", "can ban user"]
def show_privileges(self):
print()
if self == Admin:
for user_privilege in self.user_privileges:
print(_user_privilege)
else:
print("Sorry but you are not the Admin." +
"\nYou have limited privileges.")
class User:
def __init__(self, first_name, last_name, address, phone_number):
self.first_name = first_name
self.last_name = last_name
self.full_name = first_name + " " + last_name
self.address = address
self.phone_number = phone_number
self.privileges = Privileges()
def describe_user(self):
print("\nName: " + self.full_name.title() +
"\nAddress: " + self.address.title() +
"\nphone_number: " + str(self.phone_number))
def greet_user(self):
print("\nGreetings " + self.first_name.title() + ".")
Admin = User('Nebojsa', 'Kukic', 'A box under the bridge', 353838935494)
Admin.privileges.show_privileges()
user_2 = User("Siobhan", "O'Neill", "66 The Hermitage", 353831681859)
user_2.privileges.show_privileges()
输出:
Sorry but you are not the Admin.
You have limited privileges.
Sorry but you are not the Admin.
You have limited privileges.
我不明白为什么管理实例不返回:
can add post
can delete post
can ban user
但结果却是:
Sorry but you are not the Admin.
You have limited privileges.
我不明白为什么自我不等于管理? 再次抱歉,问题太长了,谢谢
首先,这不是一个好方法
但是无论如何,
self
不是等于Admin
,这是一个User
对象self
将是Privileges
对象。。。更好的方法是创建一个布尔属性,说明是否有管理员权限,例如:相关问题 更多 >
编程相关推荐