python 类 --导入类
导入类
1.1、导入单个类
如何导入单个类
- 以上一节为例,编写一个car.py程序
- 编写一个新程序my_car.py
- 希望在my.car.py文件中直接使用car.py中的函数,使用from car import Car
实例,新建一个car.py
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) + "mile on it.") def update_odomter(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
新建一个my_car.py
from car import Car
my_new_car = Car('audi','a8',2018)
print(my_new_car.get_descriptive_name()) my_new_car.odometer_reading = 23
my_new_car.read_odometer()
执行结果:
2018 Audi A8
This car has23mile on it.
1.2、在一个模块中存储多个类
如上级例子所示,将car类作为父类,Electricar(car)作为子类
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) + "mile on it.") def update_odomter(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 # 将实例用作属性
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.") #打印一条消息,指出电瓶的续航里程
def get_range(self):
if self.battery_size == 70:
range = 240 elif self.battery_size == 85:
range = 70 msg = "This car can go approximately" + str(range)
msg += "miles on a full charge."
print(msg) 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():
"""电动汽车没有油箱"""
print("This car doesn't need a gas tank.")
在新的文件中,直接调用ElectricCar类即可。
from car import ElectricCar
my_tesla = ElectricCar("tesla",'model 2019',2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
执行结果:
2019 Tesla Model 2019
This car has a70-KWh battery.
This car can go approximately240miles on a full charge.
1.3、从一个模块中导入多个类
from car import Car,ElectricCar
from car import Car,ElectricCar #import语句让python打开模块car,并导入其中的Car类
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
my_tesla = ElectricCar('tesla','roadstater',2016)
print(my_tesla.get_descriptive_name())
"""导入类是一种有效的编程方式。"""
1.4、导入整个模块
- 导入整个模块
- 使用句点表示法访问需要的类
import Car
实例
#导入整个模块
import car
my_beetle = car.Car('volkswagen','beetle',2019)
print(my_beetle.get_descriptive_name()) my_tesla = car.Car('tesla','roadster',2018)
print(my_tesla.get_descriptive_name())
运行结果:
2019 Volkswagen Beetle
2018 Tesla Roadster
1.5、导入模块中的所有类
from modele_name import *
类编码风格
- 类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。
- 每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
- 可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
- 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import 语句,再添加一个空行,然后编写导入你自己编写的模块的import 语句。在包含多条import 语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方
python 类 --导入类的更多相关文章
- Python中导入类
python导入类与导入函数,模块基本一样,一个模块fun,其中包含三个类 class Dog(): def __init__(self,name): self.name=name def bark( ...
- 【Python】导入类
导入单个类 随着不断添加类,可能会使文件变得很长,那么此时,需要将类存储在模块中,然后在主程序导入类即可 book.py class Book(): '''模拟一本书''' def __init__( ...
- python面向对象反射-框架原理-动态导入-元类-自定义类-单例模式-项目的生命周期-05
反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反 ...
- python之定义类创建实例
https://www.cnblogs.com/evablogs/p/6688938.html 类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 1 2 >>&g ...
- Python设计模式 - UML - 类图(Class Diagram)
简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...
- python模块和类的通用转换规则(2),三步转oo
介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...
- Python模块和类.md
模块的定义 代码的层次结构 对于python的层次结构一般为包->模块 包也就是文件夹,但是文件夹下必须有文件"init.py"那么此文件夹才可以被识别为包."in ...
- Python中的类(classes)
Python的类机制使用尽可能少的新语法和语义将类引入语言.python的类提供了面向对象程序设计语言所有的 标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相 ...
- NO.7:自学python之路------类的方法、异常处理、socket网络编程
引言 我visual studio 2017就算体积巨大.启动巨慢.功能简陋也不会安装PyCharm的,嘿呀,真香.好吧,为了实现socket网络编程,更换了软件. 正文 静态方法 只是在名义上归类管 ...
随机推荐
- Lincode刷题No.8
8.Rotate String lintcode 题解1: class Solution { public: /** * @param str: An array of char * @param o ...
- ACM北大暑期课培训第六天
今天讲了DFA,最小生成树以及最短路 DFA(接着昨天讲) 如何高效的构造前缀指针: 步骤为:根据深度一一求出每一个节点的前缀指针.对于当前节点,设他的父节点与他的边上的字符为Ch,如果他的父节点的前 ...
- 快速掌握—HTML快速实现自定义Input开关
HTML <input id="customSwitch" type="checkbox" /> <label for="custo ...
- GeneXus 16 如何实现自动化测试和发布
CI/CD(持续集成/持续发布)是一种软件开发策略,以使公司能够尽可能快速.高效地给客户发布新功能.为了能够实现CI/CD,就需要通过PipeLine对整个软件过程进行一系列的节点管理,必须将每个阶段 ...
- Codeforces - A. Watermelon
A. Watermelon time limit per test 1 second memory limit per test 64 megabytes input standard input o ...
- 在ubuntu 18上安装MongoDB
本文介绍 MongoDB Community Edition 在 Ubuntu 下的安装和常见配置方法.文中操作基于 MongoDB Community Edition 4.2.2 和 Ubuntu ...
- LeetCode刷题预备知识(二)
Python四大数据结构的属性及方法 在LeetCode刷题预备知识一中我们掌握了常见的内置函数,和四大数据结构的基本概念: 但只掌握这些还远远不够,我们还需了解四大数据结构的属性及方法才能更高效快速 ...
- 关于将vs项目推到GitHub上遇到的问题
想整理下项目,然后通过vs推到github下. 1.在vs上创建好了一个程序.点中解决方案-->右键-->将项目加入代码库. 2.在github上创建好一个仓库,然后复制下https 3. ...
- 洛谷p1137 模拟退火
题目链接:https://www.luogu.org/problem/P1337 以x为原点,将力分解成横纵方向的力,每次退火时单独对答案的横纵坐标进行判断是否更新答案 #include<ios ...
- @RequestParam,@PathVariable,@RequestBody
@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @P ...