导入类
#导入的类
#car.py
# 代码所有:cxw
# 开发时间:2021/11/7 15:08
'''一个用于表示汽车的类'''
class Car():
def __init__(self,make,model,year):
self.making=make
self.models=model
self.years=year
self.read_long=60
'''描述汽车的种类,类型,生产日期'''
def get_descriptive_name(self):
print(self.years," ",self.making," ",self.models)
'''打印汽车的里程'''
def read_carlength(self):
print("the car has",str(self.read_long))
'''将里程设置程指定的值,拒绝里程表回拨'''
def update_long(self,message):
if message>=self.read_long:
self.read_long=message
else:
print("you can not use it")
'''将里程表读数添加指定的量'''
def increment_odment(self,miles):
self.read_long+=miles
class Battery():
def __init__(self,battery_size=85):
self.battery=battery_size
def describe(self):
print("this has ",self.battery," battery!")
def battery_length(self):
if self.battery==70:
range=250
elif self.battery==85:
range=245
mm="this car can go on "+str(range)
mm+=" miles on a full charge."
print(mm)
class Elec(Car):
def __init__(self,make,model,year):
super(Elec, self).__init__(make,model,year)
self.battery=Battery()
导入单个类
定义:Python允许你将类存储在模块中,然后在主程序中导入所需的模块。
确定类像你希望的那样工作后,你就可以不管这些文件,而专注于主程序的高级逻辑了。
# 代码所有:cxw
# 开发时间:2021/11/7 15:19
#导入单个类
#导入文件名为car.py中包含的Car类
from car import Car
my_newcar=Car("audi","a4",2016)
my_newcar.get_descriptive_name()
my_newcar.read_carlength()
my_newcar.update_long(50)
my_newcar.read_carlength()
my_newcar.increment_odment(20)
my_newcar.read_carlength()
在一个模块中存储多个类
# 代码所有:cxw
# 开发时间:2021/11/7 15:43
'''在一个模块中存储多个类'''
from car import Elec #在car.py文件中调用Elec的类,创建一个电动车
my_elec_car=Elec("tes","models",2016)
my_elec_car.get_descriptive_name()
my_elec_car.read_carlength()
my_elec_car.update_long(75)
my_elec_car.increment_odment(5)
my_elec_car.battery.describe()
my_elec_car.battery.battery_length()
导入整个模块
可以导入整个模块,再使用句点表示法访问需要的类。这种导入方法很简单,易于阅读
由于创建类实例的代码包含模块名,因此不会与当前文件使用的名称起冲突
import module
user_name.module_name.class_name
import car #导入整个模块,用句点表示法
my_car=car.Car("audi","a4",2016)
my_car.get_descriptive_name()
my_car.read_carlength()
my_car.update_long(50)
my_car.read_carlength()
my_car.increment_odment(20)
my_car.read_carlength()
导入模块中的所有类(不推荐)
from car import *
在一个模块中导入另一个模块
'''
有时候,需要将类分散到多个模块中,以免模块太大,
或在同一个模块中存储不相关的类。
将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。
在这种情况下,可在前一个模块中导入必要的类。
'''
#car.py
class Car():
def __init__(self,make,model,year):
self.making=make
self.models=model
self.years=year
self.read_long=60
'''描述汽车的种类,类型,生产日期'''
def get_descriptive_name(self):
print(self.years," ",self.making," ",self.models)
'''打印汽车的里程'''
def read_carlength(self):
print("the car has",str(self.read_long))
'''将里程设置程指定的值,拒绝里程表回拨'''
def update_long(self,message):
if message>=self.read_long:
self.read_long=message
else:
print("you can not use it")
'''将里程表读数添加指定的量'''
def increment_odment(self,miles):
self.read_long+=miles
#my_electric.py 导入car.py的类
from car import Car #从car.py中导入了Car()类,
class Battery():
def __init__(self,battery_size=85):
self.battery=battery_size
def describe(self):
print("this has ",self.battery," battery!")
def battery_length(self):
if self.battery==70:
range=250
elif self.battery==85:
range=245
mm="this car can go on "+str(range)
mm+=" miles on a full charge."
print(mm)
class Elec(Car):
def __init__(self,make,model,year):
super(Elec, self).__init__(make,model,year)
self.battery=Battery()
#my_car.py 调用类
from car import Car #从car.py中导入了Car类,并从my_electric.py中导入了Elec类
from my_electric_car import Elec
my_beetee=Car("volock","bettee",2016)
my_beetee.get_descriptive_name()
mytes=Elec("tes","roader",2017)
mytes.get_descriptive_name()
实例1
从模块中定义类,导入类,使用类
#restaurant.py
# 代码所有:cxw
# 开发时间:2021/11/7 20:41
#一个用于表示餐厅的类
class Restaurant():
def __init__(self,res_name,res_type):
self.name=res_name
self.type=res_type
def describe_res(self):
print("the ",self.name," is",self.type)
#导入类
# 代码所有:cxw
# 开发时间:2021/11/7 20:44
#导入restaurant中的Restaurant类
from restaurant import Restaurant
my_res=Restaurant("dongbei","delicious")
my_res.describe_res()
python 的标准库
python的标准库是一组模块,安装的python都包含它
# 代码所有:cxw
# 开发时间:2021/11/7 22:36
from collections import OrderedDict
#python的标准库,模块collections中的一个类,OrderedDict,字典类,键值对,key-value
favorite_languages=OrderedDict()
favorite_languages["jen"]="python"
favorite_languages["sara"]="c"
favorite_languages["edward"]="ruby"
favorite_languages["pjill"]="python"
for name,language in favorite_languages.items():
print(name.title()+" 's favorite languages is "+language.title())
实例2
# 代码所有:cxw
# 开发时间:2021/11/7 22:36
from collections import OrderedDict
#python的标准库,模块collections中的一个类,OrderedDict,字典类,键值对,key-value
favorite_languages=OrderedDict()
favorite_languages["jen"]="python"
favorite_languages["sara"]="c"
favorite_languages["edward"]="ruby"
favorite_languages["pjill"]="python"
for name,language in favorite_languages.items():
print(name.title()+" 's favorite languages is "+language.title())
'''---------------------------------'''
from collections import OrderedDict
favorite_languages=OrderedDict()
favorite_languages["jen"]="python"
favorite_languages["sara"]="c"
favorite_languages["jack"]="java"
for name,language in favorite_languages.items(): #python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。
print(name.title()+" "+language.title())
##实例
#使用OrderdDict()类表示词汇表
from collections import OrderedDict
word_name=OrderedDict()
word_name["1."]="challeage"
word_name["2."]="abundant" #大量的
word_name["3."]="abandon" #放弃
for num,word in word_name.items():
print(num.title()+" "+word.title())
实例3
#骰子
#生成随机数
# import random
# s=random.randint(1,6) #导入random类使用randint()方法,生成一个指定范围的整数
# print(s)
class Die():
def __init__(self,sides=6):
self.side=sides
def roll_die(self):
from random import randint
x=randint(1,6) #打印1和骰子之间的随机数
print(x)
def touzi(self,sd,n):
self.m=sd
self.num=n
for sd in range(n):
print(sd,end=" ")
tz=Die()
tz.roll_die()
tz.touzi(6,10)
tz.touzi(20,10)
注解
#python标准库
'''
Python Module of the Week:
要了解Python标准库,
一个很不错的资源是网站Python Module of the Week。
请访问http://pymotw.com/并查看其中的目录,
在其中找一个你感兴趣的模块进行探索,
或阅读模块collections和random的文档。
'''
#类编码风格
'''
类名应采用驼峰命名法,
即将类名中的每个单词的首字母都大写,而不使用下划线
。实例名和模块名都采用小写格式,并在单词之间加上下划线。
'''