类的导入
单个或多个类的导入
基于不断给类添加功能的复杂性,python允许将类存储在模块中,并在主程序中导入含类的模块,该含类的模块中不仅可以包含一个类,还可以包含多个类,此处需要注意一个细节,在命名上我们将类名当作模块的名字,如car.py,而将使用类的主程序命名为更为具体的名称,如my_car.py,导入的格式如模块的导入一般
from car import Car # 一个模块中导入一个类
from car import Car,ElectricCar #一个模块中导入多个类
from car import * # 导入所有类
课后习题
9-10导入Restaurant类
from restaurant import Restaurant
restaurant_1 = Restaurant('tongfu','zhusu')
restaurant_1.describe_restaurant()
restaurant_1.open_restaurant()
restaurant_1.set_service(12)
restaurant_1.increment_number_served(5)
9-11导入Admin类
class Privileges(): # admin模块
def __init__(self,privileges):
self.privileges = privileges
def show_privileges(self):
for privilege in self.privileges:
print(privilege)
class User():
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def describe_users(self):
print('first name is:' + self.first_name)
print('last name is:' + self.last_name)
def greet_user(self):
print('Hello ' + self.first_name + ' ' + self.last_name + ',time for returning money!')
class Admin(User):
def __init__(self, first_name, last_name,privileges):
super().__init__(first_name, last_name)
self.privileges = Privileges(privileges)
from admin import User,Admin,Privileges # 导入模块
right = ['can add post', 'can delete', 'can ban user']
admin = Admin('kobe', 'brayant',right)
admin.privileges.show_privileges()
9-12多个模块
class User(): # user文件
--snip--
from user import User # 包含Privileges和Admin文件的模块,命名为admin模块
class Privileges():
--snip--
class Admin(User):
--snip--
from admin import Privileges,Admin
right = ['can add post', 'can delete', 'can ban user']
admin = Admin('kobe', 'brayant',right)
admin.privileges.show_privileges()
9-13使用OrderedDict
from collections import OrderedDict
vocabularies = OrderedDict()
vocabularies['del'] = 'delete'
vocabularies['lower'] = 'all become lowercase'
vocabularies['upper'] = 'all become capital'
for key,values in vocabularies.items():
print(key + ':' + vocabularies[key])
9-14骰子
from random import randint
class Die():
def __init__(self):
self.side = 6 # 设默认值
def roll_die(self,num):
self.num = num # 设定投掷次数
for i in range(num):
k = randint(1,self.side) # 产生随机投掷产生的数
print(k)
r = Die()
r.side = 10 # 设边数
r.roll_die(10) # 设投的次数