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()
2.3 将实例作为属性
from car import Car
class Battery:
"""一次模拟电动汽车电瓶的简单尝试。"""
def __init__(self, battery_size=175):
"""初始化电瓶的属性。"""
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 = Battery()
def describe_battery(self):
"""打印一条描述电瓶容量的消息。"""
self.battery.describe_battery()
def fill_gas_tank(self):
"""电动汽车没有油箱。"""
print("This car doesn't need a gas tank!")
2.4 python标准库
# randint返回两个整数之间(含)的随机整数
from random import randint
randint(1, 6)
# 从列表或元组中随机选一个元素
from random import choice
players = ['charles', 'martina', 'michael', 'florence', 'eli']
first_up = choice(players)
print(first_up)
3. 编码风格
标签:python,car,self,odometer,print,my,def From: https://www.cnblogs.com/route/p/17546064.html类名采用驼峰命名法,而不使用下划线。实例名和模块名都采用小谢格式,并在单词之间加上下划线。
对应每个类,在类定义后面都应包含一个文档字符串。每个模块也应包含一个文档字符串。
在类中,使用一个空行分割方法;在模块中,用两个空行分割类。
先写导入标准库模块的import语句,再添加一个空行,写导入自定义模块的import。