日期:2017-12-30
作者:秋的懵懂
# coding = utf-8
# ***********************************************************
# @file python_09_class.py
# @brief 类
# @author 魏文应
# @date 2017-12-28
# ***********************************************************
# ---------------------------------------------------------
# 定义类
print('\n\n')
print('_______________________________________________')
print("定义类:")
class Dog():
"""定义dog类"""
# self必须在前面,name和age是属性
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() + 'roll over!')
def test(self):
self.roll_over()
my_dog = Dog('willie', 6)
# 访问类的属性
print(my_dog.name.title())
print(my_dog.age)
# 调用方法
my_dog.sit()
my_dog.roll_over()
my_dog.test()
print('_______________________________________________')
# ---------------------------------------------------------
# ---------------------------------------------------------
# 修改类的属性
print('\n\n')
print('_______________________________________________')
print("修改类的属性:")
class Car():
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_discriptive_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
def fill_gas_tank(self):
"""汽车油箱"""
print("This car has a gas tank.")
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_discriptive_name())
my_new_car.read_odometer()
# 直接修改属性
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
# 通过方法修改属性
my_new_car.update_odometer(100)
my_new_car.read_odometer()
print('_______________________________________________')
# ---------------------------------------------------------
# ---------------------------------------------------------
# 定义一个关于电池的类
print('\n\n')
print('_______________________________________________')
print("定义一个关于电池的类:")
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.')
print('_______________________________________________')
# ---------------------------------------------------------
# ---------------------------------------------------------
# 继承父类
print('\n\n')
print('_______________________________________________')
print("继承父类:")
class ElectricCar(Car):
"""电动车类"""
def __init__(self, make, model, year):
"""初始化父类属性"""
super().__init__(make, model, year)
self.battery_size = 70
# 将实例用作属性
self.battery = Battery()
def describe_battery(self):
"""打印电瓶容量信息"""
print('This car has a ' +
str(self.battery_size) +
'-kWh battery.')
# 重写父类中的方法
def fill_gas_tank(self):
"""电动汽车没有油箱"""
print("This car dosen't need a gas tank.")
my_tesla = ElectricCar('tesla', 'model s', 2016)
# 继承父类的方法
print(my_tesla.get_discriptive_name())
# 子类特有的方法
my_tesla.describe_battery()
# 重写父类中的方法
my_tesla.fill_gas_tank()
# 将实例用作属性
my_tesla.battery.describe_battery()
print('_______________________________________________')
# ---------------------------------------------------------
# ---------------------------------------------------------
# import导入类
print('\n\n')
print('_______________________________________________')
print("import导入类:")
# 导入类,一般要放在文件开头位置,这里为了学习方便
from python_09_class_car import Car
my_new_car = Car('audi', 'a4', 2016)
my_new_car.read_odometer()
# 导入整个模块,建议这样使用
import python_09_class_car as car
my_new_car = car.Car('audi', 'a4', 2016)
my_new_car.read_odometer()
print('_______________________________________________')
# ---------------------------------------------------------
# ---------------------------------------------------------
# python标准库
print('\n\n')
print('_______________________________________________')
print("python标准库:")
# 使用模块collections中的OrderedDict类
# 这个类可以创建字典,同时元素有序排列
from collections import OrderedDict
favorite_language = OrderedDict()
favorite_language['jen'] = 'python'
favorite_language['sarah'] = 'c'
favorite_language['edward'] = 'ruby'
favorite_language['phil'] = 'python'
for name, language in favorite_language.items():
print(name.title() + "'s favorite language is " +
language.title() + '.')
print('_______________________________________________')
# ---------------------------------------------------------
子模块:
# coding = utf-8
# ***********************************************************
# @file python_09_class_car.py
# @brief 类的模块文件
# @author 魏文应
# @date 2017-12-28
# ***********************************************************
class Car():
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_discriptive_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!')
print('---TEST IMPORT---')
def update_odometer(self, mileage):
"""设置英里数值"""
self.odometer_reading = mileage
def fill_gas_tank(self):
"""汽车油箱"""
print("This car has a gas tank.")
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.')
class ElectricCar(Car):
"""电动车类"""
def __init__(self, make, model, year):
"""初始化父类属性"""
super().__init__(make, model, year)
self.battery_size = 70
# 将实例用作属性
self.battery = Battery()
def describe_battery(self):
"""打印电瓶容量信息"""
print('This car has a ' +
str(self.battery_size) +
'-kWh battery.')
# 重写父类中的方法
def fill_gas_tank(self):
"""电动汽车没有油箱"""
print("This car dosen't need a gas tank.")