#创建和使用类
#创建Dog类
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name,age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗收到命令时蹲下"""
print(f"{self.name} is now sitting.")
def roll_over(self):
"""模拟小狗收到命令时打滚"""
print(f"{self.name} roll over!")
my_dog=Dog('Whllie',6)
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
My dog’s name is Whllie.
My dog is 6 years old.
#访问属性
my_dog.name
‘Whllie’
#调用方法
my_dog.sit()
my_dog.roll_over()
Whllie is now sitting.
Whllie roll over!
#创建多个实例
my_dog=Dog('Whllie',6)
your_dog=Dog('Lucy',3)
#使用类和实例
class Car:
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
def get_descriptive_name(self):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
2019 Audi A4
#给属性指定默认值
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.")
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
2019 Audi A4
This car has 0 miles on it.
my_new_car.odometer_reading=23
my_new_car.read_odometer()
This car has 23 miles on it.
#通过方法修改属性的值
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):
self.odometer_reading=mileage
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23)
my_new_car.read_odometer()
2019 Audi A4
This car has 23 miles on it.
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!")
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23)
my_new_car.read_odometer()
my_new_car.update_odometer(-1)
my_new_car.read_odometer()
2019 Audi A4
This car has 23 miles on it.
You can’t roll back an odometer!
This car has 23 miles on it.
#通过方法对属性的值进行递增
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
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23500)
my_new_car.read_odometer()
my_new_car.increment_odometer(100)
my_new_car.read_odometer()
2019 Audi A4
This car has 23500 miles on it.
This car has 23600 miles on it.
#继承
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
my_tesla=ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
2019 Tesla Model S
#给子类定义属性和方法
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=75
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
my_tesla=ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
2019 Tesla Model S
This car has a 75-kwh battery.
#重写父类的方法
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 needs a gas tank!")
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=75
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
def fill_gas_tank(self):
print("This car doesn't needs a gas tank!")
my_tesla=ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.fill_gas_tank()
2019 Tesla Model S
This car doesn’t needs a gas tank!
#将示例添加属性
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 needs a gas tank!")
class Battery:
def __init__(self,battery_size=75):
self.battery_size=battery_size
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=75
self.battery=Battery()
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
def fill_gas_tank(self):
print("This car doesn't needs a gas tank!")
my_tesla=ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
2019 Tesla Model S
This car has a 75-kwh battery.
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 needs a gas tank!")
class Battery:
def __init__(self,battery_size=75):
self.battery_size=battery_size
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
def get_range(self):
if self.battery_size==75:
range=260
elif self.battery_size==100:
range=315
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=75
self.battery=Battery()
def describe_battery(self):
print(f"This car has a {self.battery_size}-kwh battery.")
def fill_gas_tank(self):
print("This car doesn't needs a gas tank!")
my_tesla=ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
2019 Tesla Model S
This car has a 75-kwh battery.