在我学习python的过程中,我在以下代码中遇到了一个错误:
class User:
def __init__(self, first_name, last_name, location, payment_method):
self.first_name = first_name
self.last_name = last_name
self.location = location
self.payment_method = payment_method
self.login_attempts = 0
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
def printing_login_attempts(self):
print('Quantity of login attempts: ' + str(self.login_attempts))
def describe_user(self):
print('Current user first name: ' + self.first_name.title())
print('Current user last name: ' + self.last_name.title())
print('Location is ' + self.location.title() + '. Payment method is ' + self.payment_method)
def greet_user(self):
print('Hello ' + self.first_name.title() + ' ' + self.last_name.title() + '!!!')
class Admin(User):
def __init__(self, first_name, last_name, location, payment_method):
super().__init__(first_name, last_name, location, payment_method)
self.privilegis = Privilegis()
class Privilegis:
def __init__(self, privilegis_type):
self.privilegis_type = ['Allow to delete users', 'Allow to rename users', 'Allow to ban users']
def show_privilegis(self):
print('Special admins privilegis are: ' + ', '.join(self.privilegis))
new_user = Admin('John', 'Edwards', 'LA', 'visa')
new_user.privilegis.show_privilegis()
错误描述
^{pr2}$我不明白问题出在哪里。我应该如何使用一个类(Privilegis)作为另一个(Admin)的属性?在
您的
Admin
类有一个privilegis
属性,该属性初始化Privilegis
的实例。__init__()
方法定义了如何初始化类,在您的例子中,它需要一个privilegis_type
作为参数。在如果希望在实例化时将此特权传递给
Admin
,请将该参数添加到其__init__
方法中,并在内部将其传递给privilege
属性。在虽然在代码中有两个主要错误:
Privilegis
类根本没有使用参数。您可以维护您的原始代码,删除使用一个合理的默认值,这取决于您要做什么。在self.privilegis
未在Privilegis
内的任何地方定义。我相信你希望它是self.privilegis_type
这意味着拥有这样的东西:
^{pr2}$在你的
Privileges
类中,你写下:因此,您指定它需要一个
privilegis_type
参数,但这很奇怪,因为稍后,您对此什么也不做。在或者您应该重写构造函数,并处理参数(从而在构造
Privilegis
对象时提供一个构造函数),或者应该去掉该参数。在相关问题 更多 >
编程相关推荐