第四章练习答案
00-classes-and-instances
练习 1:Person类
python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, I'm {self.name} and I'm {self.age} years old"
person = Person("Alice", 30)
print(person.greet())练习 3:类属性计数器
python
class Counter:
count = 0
def __init__(self):
Counter.count += 1
c1 = Counter()
c2 = Counter()
print(Counter.count) # 201-inheritance-and-mro
练习 1:形状继承
python
import math
class Shape:
def area(self):
raise NotImplementedError
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height02-special-methods
练习 1:实现__eq__
python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
if not isinstance(other, Point):
return False
return self.x == other.x and self.y == other.y
p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2) # True03-properties-and-descriptors
练习 1:温度转换
python
class Temperature:
def __init__(self, celsius):
self._celsius = celsius
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
self._celsius = value
@property
def fahrenheit(self):
return self._celsius * 9/5 + 32
@fahrenheit.setter
def fahrenheit(self, value):
self._celsius = (value - 32) * 5/9
temp = Temperature(0)
print(temp.fahrenheit) # 32.0
temp.fahrenheit = 212
print(temp.celsius) # 100.004-dataclasses
练习 1:Product类
python
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float
quantity: int = 0
def total_value(self):
return self.price * self.quantity
product = Product("Laptop", 999.99, 5)
print(product.total_value()) # 4999.95回到第四章概览