
(1) 创建和使用类
class Dog():
"""一次模拟小狗的简单尝试"""
# 在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
根据类创建实例
(2) 访问属性
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
输出
My dog's name is Willie.
My dog is 6 years old.
(3) 调用方法
my_dog2 = Dog('willie', 6)
my_dog2.sit()
my_dog2.roll_over()
输出
Willie is now sitting.
Willie rolled over!
(4) 创建多个实例
m_dog = Dog('willie', 6)
y_dog = Dog('lucy', 3)
print("My dog's name is " + m_dog.name.title() + ".")
print("My dog is " + str(m_dog.age) + " years old.")
m_dog.sit()
print("\nYour dog's name is " + y_dog.name.title() + ".")
print("Your dog is " + str(y_dog.age) + " years old.")
y_dog.sit()
输出
My dog's name is Willie.
My dog is 6 years old.
Willie is now sitting.
Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting.
(5) 使用类和实例
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
my_new_car = Car('audi', 'a6', 2019)
print(my_new_car.get_descriptive_name())
输出
2019 Audi A6
(6) 给属性指定默认值
添加一个名为odometer_reading的属性,其初始值总是为0。
class Car2():
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 = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
my_new_car2 = Car2('audi', 'a8', 2019)
print(my_new_car2.get_descriptive_name())
my_new_car2.read_odometer()
输出:
2019 Audi A8
This car has 0 miles on it.
修改属性的值
(7) 直接修改属性的值
my_new_car2 = Car2('audi', 'a4', 2019)
print(my_new_car2.get_descriptive_name())
my_new_car2.odometer_reading = 23
my_new_car2.read_odometer()
输出:
2019 Audi A4
This car has 23 miles on it.
(8) 通过方法修改属性的值
class Car3():
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 = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
self.odometer_reading = mileage
my_new_car3 = Car3('audi', 'a4', 2020)
print(my_new_car3.get_descriptive_name())
my_new_car3.update_odometer(23)
my_new_car3.read_odometer()
输出:
# 2020 Audi A4
# This car has 23 miles on it.
(9) 继承
创建子类时,父类必须包含在当前文件中,且位于子类前面。
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 = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
print("This car has " + str(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
(10) 定义子类ElectricCar。定义子类时必须在括号内指定父类的名称。
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""调用ElectricCar父类的方法__init__(),让ElectricCar实例包含父类的所有属性。"""
super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())
输出:
2019 Tesla Model S
(11) 导入单个类
import语句让Python打开模块car,并导入其中的Car类。
from car import Car
my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
(12) 导入模块中的多个类
from car import Car, ElectricCar
my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())
my_tesla = ElectricCar('tesla', 'roadster', 2019)
print(my_tesla.get_descriptive_name())
(13) 导入整个模块
import car
my_beetle = car.Car('volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())
my_tesla = car.ElectricCar('tesla', 'roadster', 2016)
print(my_tesla.get_descriptive_name())
(14) 导入模块中的所有类
from module_name import *