编写book类,要求: 1.类中包含属性书名、书号、主编、出版社、页数、价格等。 2.其中页数不能少于200页,否则输出错误信息,并强制赋值200,价格不可为负数。 3.要求提供所有成员的只读权限,提供价格的修改权限。 4.根据类的合理性原则设计其他方法。
时间: 2023-05-22 17:07:16 浏览: 71
为了满足上述要求,可以按照以下方式编写book类:
```
class book:
def __init__(self, title, number, editor, publisher, pages, price):
if pages < 200:
print("Error: Pages cannot be less than 200!")
self.pages = 200
else:
self.pages = pages
if price < 0:
print("Error: Price cannot be negative!")
self.price = 0
else:
self.price = price
self.__title = title
self.__number = number
self.__editor = editor
self.__publisher = publisher
@property
def title(self):
return self.__title
@property
def number(self):
return self.__number
@property
def editor(self):
return self.__editor
@property
def publisher(self):
return self.__publisher
@property
def pages(self):
return self.__pages
@pages.setter
def pages(self, value):
if value < 200:
print("Error: Pages cannot be less than 200!")
self.__pages = 200
else:
self.__pages = value
@property
def price(self):
return self.__price
@price.setter
def price(self, value):
if value < 0:
print("Error: Price cannot be negative!")
self.__price = 0
else:
self.__price = value
def print_info(self):
print("Title:", self.title)
print("Number:", self.number)
print("Editor:", self.editor)
print("Publisher:", self.publisher)
print("Pages:", self.pages)
print("Price:", self.price)
def discount(self, percentage):
self.price *= (1 - percentage/100)
```
在该类中,我们使用了init方法初始化该类的各个属性,其中pages和price都进行了合法性检验,如果不合法则会输出错误信息并进行强制赋值。我们使用@property装饰器来实现只读权限,使用@pages.setter和@price.setter装饰器来实现价格的修改权限。我们还实现了一个print_info方法来打印所有信息,以及一个discount方法来对价格进行折扣处理。
阅读全文