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网络编程,更换了软件. 正文 静态方法 只是在名义上归类管 ...
随机推荐
- Flink入门(五)——DataSet Api编程指南
Apache Flink Apache Flink 是一个兼顾高吞吐.低延迟.高性能的分布式处理框架.在实时计算崛起的今天,Flink正在飞速发展.由于性能的优势和兼顾批处理,流处理的特性,Flink ...
- Linux-Cacti监控{Verson:1.2.8}
首先需要一个LAMP平台 或LNMP平台 yum -y install httpd mariadb php mariadb-server mariadb-devel zlib freetype lib ...
- 怎样使我们的用户不再抵触填写Form表单?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/8-tips-for-an-awesome-sign ...
- .NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法
行为不一致 .NET Core 3.0 新出了个内置的 JSON 库, 全名叫做尼古拉斯 System.Text.Json - 性能更高占用内存更少这都不是事... 对我来说, 很多或大或小的项目能少 ...
- 实现antd下拉框动态添加内容(与数据库交互)
antd下拉控件的动态内容添加(与数据库交互) antd这个框架给开发带来了极大的方便,但同时,我认为还有一些不方便的地方:常用的逻辑在文档中没有体现.需要前端开发经验的人才能快速上手,而我刚刚接触这 ...
- SQL Server2012高可用之事物复制(发布订阅)测试
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既不可写也不可读,即采用的高可用技术为"数据库镜像".存在的问题为 ...
- 使用wireshark 对flutter 框架APP进行抓包
引言 最近公司开发一个APP,由于原生人力不足,直接由前端使用flutter 开发的,而使用flutter框架开发的客户端 fiddler无法抓到包,所以我采用wireshark从路由层面抓包 fid ...
- Oauth2的使用(第三方授权登录)
例子: 京东商城 ,微博 ,用户三者之间的关系 第一方:用户 第二方:京东商城 第三方:微博 用户不希望在京东商城上注册,可以授权微博使用微博上的用户信息进行登录京东商城. 授权流程: 地址一:授权页 ...
- python 黏包现象
一.黏包 1.tcp有黏包现象 表现两种情况 发送的数据过小且下面还有一个发送数据,这两个数据会一起发送 发送的数据过大,超过最大缓存空间,超出的部分在下一次发送的时候发送 原因: tcp是面向流的, ...
- newSQL 到底是什么?
数据库发展至今已经有3代了: SQL,传统关系型数据库,例如 MySQL noSQL,例如 MongoDB newSQL SQL 的问题 互联网在本世纪初开始迅速发展,互联网应用的用户规模.数据量都越 ...