一、类的创建和实例
class Car():
"""docstring for 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
my_new_car = Car("audi","a4","2018")
print(my_new_car.get_descriptive_name())
1.方法与属性
方法:类中的函数称为方法
__init__()
是一个特殊的方法,当创建类的实例时,会自动执行这个函数。- 调用每个与类相关联的方法时都会自动传递实参
self
,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
属性:在类中以
self
为前缀的变量
- 类中所有的方法都可以使用属性。
- 类的任何实例都可以访问属性。
- 当类中的属性指定了初始值时,初始化实例时不必再为该属性指定初始值。
class Car():
"""docstring for Car"""
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
...
my_new_car = Car("audi","a4","2018")
...
2. 创建实例
my_new_car = Car("audi","a4","2018")
3.修改属性的值
- 直接修改
class Car():
"""docstring for Car"""
def __init__(self, make, model, year):
...
self.odometer_reading = 0
...
my_new_car = Car("audi","a4","2018")
my_new_car.odometer_reading = 23
- 通过方法修改(优)
class Car():
"""docstring for Car"""
def __init__(self, make, model, year):
...
self.odometer_reading = 0
...
def update_odometer(self,mileage):
self.odometer_reading=mileage
my_new_car = Car("audi","a4","2018")
my_new_car.update_odometer(23)
二、继承
1. 子类的创建
class Car():
...
class ElectriCar(Car):
"""docstring for ElectriCar"""
def __init__(self, make, model, year):
super().__init__(make, model ,year)
my_tesla = ElectriCar("tesla", "model s", "2018")
pritn(my_tesla.p.get_descriptive_name())
- 定义子类时,必须在括号内指定父类的名称。
- super()函数,将父类和子类关联起来,使子类实例包含父类的所有属性。
- 创建子类实例时,给父类所有未指定初始值的属性赋值。
2. 子类的属性和方法
class Car():
...
class ElectriCar(Car):
"""docstring for ElectriCar"""
def __init__(self, make, model, year):
super().__init__(make, model ,year)
self.battery_size = 70
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a "+ str(self.battery_size) "-kwh battery")
my_tesla = ElectriCar("tesla", "model s", "2018")
pritn(my_tesla.p.get_descriptive_name())
my_tesla.describe_battery()
3. 重写父类的方法
class ElectriCar(Car):
...
def fill_gas_tank(self):
print("This car doesn't need a gas tank!")
4. 将实例用作属性
class ElectriCar(Car):
"""docstring for ElectriCar"""
def __init__(self, make, model, year):
super().__init__(make, model ,year)
self.battery = Battery()
class Battery():
def __init__(self,battery_size = 70):
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a "+ str(self.battery_size) "-kwh battery")
my_tesla = ElectriCar("tesla", "model s", "2018")
my_tesla.battery.describe_battery()
三、类的导入
car 指 模块。Car, ElectricCar 指 类
- 导入单个类
from car import Car
- 在一个模块中导入多个类
from car import Car,ElectricCar
- 导入整个模块
import Car
- 导入模块中的所有类(不推荐!不推荐!不推荐!)
from car import *