python - 类

发布时间 2023-07-11 22:01:23作者: 钱塘江畔

1.类

class Dog:
	"""一次模拟小狗的简单尝试。"""

	def __init__(self, name, age):       # 当根据Dog类创建实例时,python会自动运行__init__()方法。
		"""初始化属性name和age"""
		self.name = name                 # 属性。以self.为前缀的变量可供类中所有方法使用。
		self.age = age

	def sit(self):                       # 类中的函数称为方法。
		"""模拟小狗收到命令是蹲下。"""
		print(f"{self.name} is now sitting.")

	def roll_over(self):
		"""模拟小狗收到命令时打滚。"""
		print(f"{self.name} rolled over!")

创建实例

from dog import Dog

my_dog = Dog('Willie', 6)

# 访问属性
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old")

# 调用方法
my_dog.sit()
my_dog.roll_over()

2. 使用类

class Car:
	"""一次模拟汽车的简单尝试。"""

	def __init__(self, make, model, year):
		"""初始化描述汽车的属性。"""
		self.make = make
		self.model = model
		self.year = year
		self.odometer_reading = 0     # 给属性指定默认值

	def get_descriptive_name(self):
		"""返回整洁的描述性信息。"""
		long_name = f"{self.year} {self.make} {self.model}"
		return long_name.title()

	def read_odometer(self):
		"""打印出汽车的里程"""
		print(f"This car has {self.odometer_reading} miles on it.")

	def update_odometer(self, mileage):
		"""
		将里程表读数设置为指定的值。
		禁止将读数回调。
		"""
		if mileage >= self.odometer_reading:
			self.odometer_reading = mileage
		else:
			print("You can't roll back an odometer.")

	def increment_odometer(self, miles):
		"""将里程表读书增加指定的量。"""
		self.odometer_reading += miles

	def fill_gas_tank(self):
		print("This car filled gas tank.")

2.1 子类

from car import Car

class ElectricCar(Car):
	"""电动汽车的独特之处。"""

	def __init__(self, make, model, year):
		"""
		初始化父类的属性。
		再初始化电动汽车特有的属性。
		"""
		super().__init__(make, model, year)
		self.battert_size = 75                    # 子类特有的属性

	def describe_battery(self):                # 子类特有的方法
		"""打印一条描述电瓶容量的消息。"""
		print(f"This car has a {self.battert_size}-kWh battery.")

	def fill_gas_tank(self):                #  重写父类的方法
		"""电动汽车没有油箱。"""
		print("This car doesn't need a gas tank!")

2.2 使用类

from car import Car
from electric_car import ElectricCar

my_car = Car('audi', 'a4', 2019)
print(my_car.get_descriptive_name())
my_car.read_odometer()

my_car.update_odometer(23)
my_car.read_odometer()

my_car.update_odometer(23_000)
my_car.read_odometer()

my_car.update_odometer(100)
my_car.read_odometer()

my_car.increment_odometer(100)
my_car.read_odometer()

print("-------------------------------------------")

my_new_car = ElectricCar('tesla', 'model s', 2019)
print(my_new_car.get_descriptive_name())
my_new_car.describe_battery()
my_new_car.fill_gas_tank()