练习55
实现一个名为Laptop的类,在__init__()方法中设置存储笔记本电脑价格的受保护属性price的值(不进行任何验证)。然后实现一个名为get_price()的方法来读取该属性,以及一个名为set_price()的方法来修改该属性(也不进行验证)。然后创建一个价格为3499的Laptop类实例,并按以下步骤操作:- 使用get_price()方法将price受保护属性的值打印到控制台
- 使用set_price()方法将price受保护属性的值设置为3999
- 使用get_price()方法将price受保护属性的值打印到控制台
练习56
实现了Laptop类。实现一个名为set_price()的方法来修改price属性并进行验证。验证检查:- 值是否为int或float类型,如果不是则引发TypeError并显示以下消息:
'The price attribute must be an int or float type.'
- 值是否为正数,如果不是则引发ValueError并显示以下消息:
'The price attribute must be a positive int or float value.'
然后创建一个价格为3499的Laptop类实例,并尝试使用set_price()方法将price设置为'3000'。如果引发错误,将错误消息打印到控制台。在解决方案中使用try...except...子句。The price attribute must be an int or float type.
class Laptop: def __init__(self, price): self._price = price def get_price(self): return self._price
练习57
实现了Laptop类。__init__()方法设置存储笔记本电脑价格的受保护属性price的值(不进行任何验证)。创建一个价格为3499的Laptop类实例,并尝试使用set_price()方法将price设置为-3000。如果引发错误,将错误消息打印到控制台。在解决方案中使用try...except...子句。The price attribute must be a positive int or float value.
class Laptop: def __init__(self, price): self._price = price def get_price(self): return self._price def set_price(self, value): if not isinstance(value, (int, float)): raise TypeError('The price attribute must be an int or float type.') if not value > 0: raise ValueError('The price attribute must be a positive int or ' 'float value.') self._price = value
练习58
在创建实例阶段(__init__()方法中)也为price属性添加验证。然后尝试创建一个价格为-3499的Laptop类实例。如果引发错误,将错误消息打印到控制台。在解决方案中使用try...except...子句。The price attribute must be a positive int or float value.
class Laptop: def __init__(self, price): self._price = price def get_price(self): return self._price def set_price(self, value): if not isinstance(value, (int, float)): raise TypeError('The price attribute must be an int or float type.') if not value > 0: raise ValueError('The price attribute must be a positive int or ' 'float value.') self._price = value
练习59
实现一个名为Person的类,该类有一个受保护的实例属性first_name。接下来,实现一个get_first_name()方法,用于读取first_name受保护属性的值。然后,使用get_first_name()方法和property类(以标准方式)创建一个名为first_name的属性(只读属性)。创建Person类的一个实例,并将first_name属性设置为'John'。将该实例的first_name属性值打印到控制台。练习60
实现一个名为Person的类,该类有两个受保护的实例属性,分别名为first_name和last_name。然后实现get_first_name()和get_last_name()方法,分别读取first_name和last_name受保护属性。然后,使用get_first_name()和get_last_name()方法以及property类(以标准方式)创建两个名为first_name和last_name的属性(只读属性)。将该实例的first_name和last_name属性值打印到控制台。练习61
实现一个名为Person的类,该类有两个受保护的实例属性,分别名为first_name和last_name。然后实现get_first_name()和get_last_name()方法,分别读取first_name和last_name受保护属性。然后,使用get_first_name()和get_last_name()方法以及property类(以标准方式)创建两个名为first_name和last_name的属性(只读属性)。创建Person类的一个实例,并将first_name属性设置为'John'。然后,使用set_first_name()方法设置新值'Mike'。作为响应,将first_name属性的值打印到控制台。练习62
实现一个名为Person的类,该类有两个受保护的实例属性,分别名为first_name和last_name。然后实现get_first_name()和get_last_name()方法,分别读取first_name和last_name受保护属性。然后,使用get_first_name()和get_last_name()方法以及property类(以标准方式)创建两个名为first_name和last_name的属性(只读属性)。作为响应,将创建的实例的__dict__属性打印到控制台。JohnDow{'_first_name': 'Tom', '_last_name': 'Smith'}
class Person: def __init__(self, first_name, last_name): self._first_name = first_name self._last_name = last_name def get_first_name(self): return self._first_name def set_first_name(self, value): self._first_name = value def get_last_name(self): return self._last_name def set_last_name(self, value): self._last_name = value first_name = property(fget=get_first_name, fset=set_first_name) last_name = property(fget=get_last_name, fset=set_last_name)person = Person('John', 'Dow')print(person.first_name)print(person.last_name)person.first_name = 'Tom'person.last_name = 'Smith'print(person.__dict__)
练习63
实现del_first_name()方法以删除first_name受保护属性。然后,使用get_first_name()、set_first_name()、del_first_name()方法和property类(以标准方式)创建一个名为first_name的属性(用于读取、修改和删除的属性)。创建Person类的一个名为person的实例,并将'Tom'赋值给first_name。使用del_first_name()方法删除person实例的first_name属性。将person实例的__dict__属性显示到控制台。class Person: def __init__(self, first_name): self._first_name = first_name def get_first_name(self): return self._first_name def set_first_name(self, value): self._first_name = value
练习64
实现一个名为Pet的类,该类有一个受保护的实例属性name。然后实现一个name()方法,用于读取受保护的name属性的值。使用@property装饰器创建一个name属性(只读)。创建Pet类的一个名为pet的实例,并将name属性设置为'Max'。作为响应,打印该实例的__dict__属性内容。练习65
实现一个名为Pet的类,该类有两个受保护的实例属性:name和age。接下来实现name()和age()方法,分别读取受保护的name和age属性的值。使用@property装饰器分别创建name和age属性(只读属性)。创建Pet类的一个名为pet的实例,并将name属性设置为'Max',age设置为5。作为响应,将pet实例的__dict__属性内容打印到控制台。{'_name': 'Max', '_age': 5}
练习66
实现一个名为Pet的类,该类有一个受保护的实例属性name。然后,使用@property装饰器创建一个name属性(用于读取和修改,不进行验证)。创建Pet类的一个名为pet的实例,并将name属性设置为'Max'。然后,使用点符号将name属性的值修改为'Oscar'。练习67
实现一个名为Pet的类,该类有一个受保护的实例属性name。然后,使用@property装饰器创建一个name属性(用于读取和修改,不进行验证)。将pet实例的__dict__属性打印到控制台。然后使用点符号修改属性:再次将pet实例的__dict__属性打印到控制台。{'_name': 'Max', '_age': 5}{'_name': 'Tom', '_age': 8}
练习68
实现了Pet类,该类有两个属性:name和age(见下文)。在对象创建和属性修改阶段为age属性添加验证:age属性的值必须是int类型,否则引发TypeError并显示以下消息:'The value of age must be of type int.'
age属性的值必须是正数,否则引发ValueError并显示以下消息:'The value of age must be a positive integer.'
然后尝试使用以下值创建Pet类的一个名为pet的实例:如果有错误,将错误消息打印到控制台。在解决方案中使用try...except...子句。The value of age must be of type int.
class Pet: def __init__(self, name, age): self._name = name self._age = age @property def name(self): return self._name @name.setter def name(self, value): self._name = value @property def age(self): return self._age @age.setter def age(self, value): self._age = value
练习69
实现了Pet类,该类有两个属性:name和age(见下文)。使用名称pet和以下属性值创建Pet类的一个实例:然后尝试将age属性的值修改为-10。如果有错误,将此错误消息打印到控制台。在解决方案中使用try...except...子句。The value of age must be a positive integer.
class Pet: def __init__(self, name, age): self._name = name self.age = age @property def name(self): return self._name @name.setter def name(self, value): self._name = value @property def age(self): return self._age @age.setter def age(self, value): if not isinstance(value, int): raise TypeError('The value of age must be of type int.') if not value > 0: raise ValueError('The value of age must be a positive integer.') self._age = valuepet = Pet('Max', 7)try: pet.age = -10except TypeError as error: print(error)except ValueError as error: print(error)
练习70
实现一个名为TechStack的类,该类有一个受保护的实例属性tech_names。然后,使用@property装饰器创建一个tech_names属性(读取、修改和删除属性,不进行验证)。创建该类的一个名为tech_stack的实例,并设置tech_names属性值:打印tech_names属性的内容。然后,将此属性修改为值:删除tech_stack实例的tech_names属性。将tech_stack实例的__dict__属性内容打印到控制台。python,java,sqlpython,sql{}
练习71
实现一个名为Game的类,该类有一个名为level的属性(读取和修改属性,默认为0)。level属性的值应该是[0, 100]范围内的整数。在实例创建和属性修改阶段添加验证。如果值不是int类型,引发TypeError并显示以下消息:'The value of level must be of type int.'
如果值超出[0, 100]范围,设置超出范围的边界值(分别为0或100)。然后创建一个名为games的列表,包含四个Game类的实例:games= [Game(), Game(10), Game(-10), Game(120)]
遍历games列表并打印每个实例的level属性值。