本文将带您了解关于python类--导入类的新内容,同时我们还将为您解释python导入类中的方法的相关知识,另外,我们还将为您提供关于pip无法导入Cython但pythonsetup.pyinst
本文将带您了解关于python 类 --导入类的新内容,同时我们还将为您解释python导入类中的方法的相关知识,另外,我们还将为您提供关于pip 无法导入 Cython 但 python setup.py install 可以、Python 2和Python 3中sys.path中的导入和路径顺序、Python 3 基础教程 20-Python 中导入模块和包、Python Day05 python 环境变量和import模块导入的实用信息。
本文目录一览:- python 类 --导入类(python导入类中的方法)
- pip 无法导入 Cython 但 python setup.py install 可以
- Python 2和Python 3中sys.path中的导入和路径顺序
- Python 3 基础教程 20-Python 中导入模块和包
- Python Day05 python 环境变量和import模块导入
python 类 --导入类(python导入类中的方法)
导入类
1.1、导入单个类
如何导入单个类
- 以上一节为例,编写一个car.py程序
- 编写一个新程序my_car.py
- 希望在my.car.py文件中直接使用car.py中的函数,使用from car import Car
实例,新建一个car.py
1 class Car():
2 """一次模拟汽车的简单尝试"""
3 def __init__(self,make,model,year):
4 self.make = make
5 self.model = model
6 self.year = year
7 self.odometer_reading = 0
8
9 def get_descriptive_name(self):
10 long_name = str(self.year) + " " + self.make + " " + self.model
11 return long_name.title()
12
13 def read_odometer(self):
14 print("This car has" + str(self.odometer_reading) + "mile on it.")
15
16 def update_odomter(self,mileage):
17 if mileage >= self.odometer_reading:
18 self.odometer_reading = mileage
19
20 else:
21 print("You can''t roll back an odometer!")
22
23 def increment_odometer(self,miles):
24 self.odometer_reading += miles
新建一个my_car.py
1 from car import Car
2 my_new_car = Car(''audi'',''a8'',2018)
3 print(my_new_car.get_descriptive_name())
4
5 my_new_car.odometer_reading = 23
6 my_new_car.read_odometer()
执行结果:
2018 Audi A8
This car has23mile on it.
1.2、在一个模块中存储多个类
如上级例子所示,将car类作为父类,Electricar(car)作为子类


1 class Car():
2 """一次模拟汽车的简单尝试"""
3 def __init__(self,make,model,year):
4 self.make = make
5 self.model = model
6 self.year = year
7 self.odometer_reading = 0
8
9 def get_descriptive_name(self):
10 long_name = str(self.year) + " " + self.make + " " + self.model
11 return long_name.title()
12
13 def read_odometer(self):
14 print("This car has" + str(self.odometer_reading) + "mile on it.")
15
16 def update_odomter(self,mileage):
17 if mileage >= self.odometer_reading:
18 self.odometer_reading = mileage
19
20 else:
21 print("You can''t roll back an odometer!")
22
23 def increment_odometer(self,miles):
24 self.odometer_reading += miles
25
26
27 # 将实例用作属性
28 class Battery():
29 def __init__(self, battery_size=70):
30 """初始化电瓶的属性"""
31 self.battery_size = battery_size
32
33 def describe_battery(self):
34 """打印一条描述电瓶容量的信息"""
35 print("This car has a" + str(self.battery_size) + "-KWh battery.")
36
37 #打印一条消息,指出电瓶的续航里程
38 def get_range(self):
39 if self.battery_size == 70:
40 range = 240
41
42 elif self.battery_size == 85:
43 range = 70
44
45 msg = "This car can go approximately" + str(range)
46 msg += "miles on a full charge."
47 print(msg)
48
49
50 class ElectricCar(Car):
51 """电动汽车的独特"""
52
53 def __init__(self,make,model,year):
54 """初始化父类的属性"""
55 super().__init__(make,model,year)
56
57 # 给子类定义属性和方法
58 # self.battery_size = 70 #新属性
59 #初始化父类的属性,再初始化电动车特有的属性
60 self.battery = Battery()
61
62 # #给子类定义属性和方法
63 def describe_battery(self):
64 """打印一条描述电瓶容量的消息"""
65 print("This car has a " + str(self.battery_size) + "-KWh battery.")
66
67 #重写父类的方法
68 def fill_gas_tank():
69 """电动汽车没有油箱"""
70 print("This car doesn''t need a gas tank.")
在新的文件中,直接调用ElectricCar类即可。
1 from car import ElectricCar
2
3 my_tesla = ElectricCar("tesla",''model 2019'',2019)
4 print(my_tesla.get_descriptive_name())
5 my_tesla.battery.describe_battery()
6 my_tesla.battery.get_range()
执行结果:
1 2019 Tesla Model 2019
2 This car has a70-KWh battery.
3 This car can go approximately240miles on a full charge.
1.3、从一个模块中导入多个类
1 from car import Car,ElectricCar
1 from car import Car,ElectricCar #import语句让python打开模块car,并导入其中的Car类
2
3 my_new_car = Car(''audi'',''a4'',2016)
4 print(my_new_car.get_descriptive_name())
5 my_new_car.read_odometer()
6
7 my_tesla = ElectricCar(''tesla'',''roadstater'',2016)
8 print(my_tesla.get_descriptive_name())
9
10 """导入类是一种有效的编程方式。"""
1.4、导入整个模块
- 导入整个模块
- 使用句点表示法访问需要的类
1 import Car
实例
1 #导入整个模块
2 import car
3 my_beetle = car.Car(''volkswagen'',''beetle'',2019)
4 print(my_beetle.get_descriptive_name())
5
6 my_tesla = car.Car(''tesla'',''roadster'',2018)
7 print(my_tesla.get_descriptive_name())
运行结果:
2019 Volkswagen Beetle
2018 Tesla Roadster
1.5、导入模块中的所有类
from modele_name import *
类编码风格
- 类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。
- 每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
- 可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
- 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import 语句,再添加一个空行,然后编写导入你自己编写的模块的import 语句。在包含多条import 语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方
pip 无法导入 Cython 但 python setup.py install 可以
如何解决pip 无法导入 Cython 但 python setup.py install 可以?
我正在编写一个 Cython 模块。我安装了 Cython。我的 setup.py
文件的开头如下:
import os
from distutils.command.build_ext import build_ext
from typing import Callable
from setuptools import setup,Extension
from Cython.Build import cythonize
运行 pip install .
时,出现以下错误:
ModuleNotFoundError: No module named ''Cython''
但是,如果我运行 python setup.py install
,一切都会按预期进行。
我跑了 pip install Cython --upgrade
。
Python 版本:3.7.10
Cython 版本:0.29.23
pip 版本:21.0.1
我确信需要更多信息,但不确定我应该提供什么。
编辑:
Python 路径:/Users/petioptrv/miniconda3/envs/ib-insync-sim-test/bin/python
点路径:/Users/petioptrv/miniconda3/envs/ib-insync-sim-test/bin/pip
如路径所示,我使用 conda 来管理我的环境。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Python 2和Python 3中sys.path中的导入和路径顺序
对于Python 2和Python 3,我还通过apt-get在/usr/lib(版本1.8.2)和本地/home/user/.local/lib(版本1.9.2)中安装了numpy系统.
我得到以下结果:
Python 2.7
>>> print(''\n''.join(sys.path)) /usr/lib/python2.7 /usr/lib/python2.7/plat-x86_64-linux-gnu /usr/lib/python2.7/lib-dynload /home/user/.local/lib/python2.7/site-packages /usr/local/lib/python2.7/dist-packages /usr/lib/python2.7/dist-packages /usr/lib/pymodules/python2.7 >>> import numpy >>> numpy.version <module ''numpy.version'' from /home/user/.local/lib/python2.7/site-packages/numpy/version.pyc''> >>> numpy.version.version ''1.9.2''
Python 3.4
>>> print(''\n''.join(sys.path)) /usr/lib/python3/dist-packages /usr/lib/python3.4 /usr/lib/python3.4/plat-x86_64-linux-gnu /usr/lib/python3.4/lib-dynload /home/user/.local/lib/python3.4/site-packages /usr/local/lib/python3.4/dist-packages >>> import numpy >>> numpy.version <module ''numpy.version'' from ''/usr/lib/python3/dist-packages/numpy/version.py''> >>> numpy.version.version ''1.8.2''
你能帮我理解为什么Python 3 /usr/lib / python3 / dist-packages高于/home/user/.local/lib/python3.4/site-packages导致我的旧系统安装numpy被导入默认情况下,虽然它是Python 2中的另一种方式?
解决方法
Python 3 基础教程 20-Python 中导入模块和包
本文介绍 Python 中导入模块和包
1 #目录:
2 # 导入模块和包---
3 # |
4 # 上级包、上级模块、导入模块和包的init模块-----
5 # |
6 # 同级包、同级模块、上级包的init模块、test模块--------
7 # |
8 # 下级包、下级模块、同级包的init模块-----
9 # |
10 #最下级模块、下级包的init模块
11
12 #以test模块为执行模块导入相应的模块
13 #导入同级模块
14 import 同级模块#直接导入单个模块并执行该模块
15 print(同级模块.name)#打印模块中的name属性
16 print(''*''*30)
17
18 #导入下级模块
19 # import 下级模块 #不能直接导入同级包下面的模块No module named ''下级模块''
20 # print(下级模块.name)#打印模块中的name属性
21 #修改方法:
22 import 同级包.下级模块#导入同级包的下级模块,执行包的__init__模块和导入的模块
23 print(同级包.下级模块.name)#打印该模块的name属性
24 print(''*''*30)
25
26 #导入下下级模块
27 # import 下级包.最下级模块#No module named ''下级包''
28 # print(下级包.最下级模块.name)
29 # import 同级包.最下级模块#No module named ''同级包.最下级模块''
30 # print(同级包.最级模块.name)
31 #修改:
32 import 同级包.下级包.最下级模块
33 print(同级包.下级包.最下级模块.name)
34 print(''*''*30)
35
36 #导入上级模块
37 # import 上级模块#不能直接导入同级包上面的模块No module named ''上级模块''’
38 # print(下级模块.name)#打印模块中的name属性
39 #修改方法
40 import 导入模块和包.上级模块#导入再上级包下的上级模块,执行包的__init__模块和导入的模块
41 print(导入模块和包.上级模块.name)
42 ----------------------------------------------
43 执行同级模块
44 同级模块
45 ******************************
46 同级包的init模块
47 执行下级模块
48 下级模块
49 ******************************
50 下级包的init模块
51 执行最下级模块
52 最下级模块
53 ******************************
54 导入模块和包
55 执行上级模块
56 上级模块
57
58 导入模块
导入包:
1 #导入包
2 import 同级包 #导入同级包直接导入
3
4 # print(同级包.下级模块.name)#module ''同级包'' has no attribute ''下级模块''
5 # 修改:若要使用包下的某个模块,可以在对应init模块中导入相应的模块
6
7 # import 上级包#No module named ''上级包''
8 # import 下级包No module named ''下级包''
9 #为什么找不到对应的包:因为是在内置模块和sys.path中找,在对应的路径中并没有这个包
10 # 解决:
11 import sys
12 print(sys.path)
13 sys.path.append(''E:\\python_work\\导入模块和包'')
14 sys.path.append(r''E:\python_work\导入模块和包\上级包\同级包'')
15 import 上级包
16 import 下级包
17
18
19 import 导入模块和包
20 ----------------------------------------------------------
21 同级包的init模块
22 [''E:\\python_work\\导入模块和包\\上级包'', ''E:\\python_work'', ''E:\\python3.6.4\\python36.zip'', ''E:\\python3.6.4\\DLLs'', ''E:\\python3.6.4\\lib'', ''E:\\python3.6.4'', ''C:\\Users\\11373\\AppData\\Roaming\\Python\\Python36\\site-packages'', ''E:\\python3.6.4\\lib\\site-packages'', ''E:\\python3.6.4\\lib\\site-packages\\requests-2.18.4-py3.6.egg'', ''E:\\python3.6.4\\lib\\site-packages\\pymongo-3.6.1-py3.6-win32.egg'', ''E:\\python3.6.4\\lib\\site-packages\\easygui-0.98.1-py3.6.egg'', ''E:\\python3.6.4\\lib\\site-packages\\jedi-0.12.0-py3.6.egg'', ''E:\\python3.6.4\\lib\\site-packages\\parso-0.2.0-py3.6.egg'', ''E:\\pycharm\\PyCharm 2017.3.3\\helpers\\pycharm_matplotlib_backend'']
23 上级包的init模块
24 下级包的init模块
25 导入模块和包
26
27 导入包
Python Day05 python 环境变量和import模块导入
1.定义
模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称
包: 一个有__init__.py的文件夹;用来存放模块文件
2.导入模块
import 模块名
form 模块名 import *
from 模块名 import 模块名 as 新名称
3. 导入模块本质
import 模块名 ===》 将模块中所有的数据赋值给模块名,调用时需要模块名.方法名()
from 模块名 import 方法名 ==》将该方法单独放到当前文件运行一遍,调用时只需要方法名()即可运行
导入一个包 就是执行包下的__init__.py文件
路径搜索
import sys,os
os.path.abspath(__file__) #获取当前文件的全名
os.path.dirname() #获取当前对象的父级目录
sys.path.insert()#将当前对象的路径添加到首位
sys.path.append() # 将当前环境变量添加到环境变量的末尾
以上就是Python Day05
我们今天的关于python 类 --导入类和python导入类中的方法的分享就到这里,谢谢您的阅读,如果想了解更多关于pip 无法导入 Cython 但 python setup.py install 可以、Python 2和Python 3中sys.path中的导入和路径顺序、Python 3 基础教程 20-Python 中导入模块和包、Python Day05 python 环境变量和import模块导入的相关信息,可以在本站进行搜索。
本文标签: