GVKun编程网logo

python 类 --导入类(python导入类中的方法)

13

本文将带您了解关于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导入类中的方法)

python 类 --导入类(python导入类中的方法)

导入类

1.1、导入单个类

如何导入单个类

  1. 以上一节为例,编写一个car.py程序
  2. 编写一个新程序my_car.py
  3. 希望在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.")
View Code

在新的文件中,直接调用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. 导入整个模块
  2. 使用句点表示法访问需要的类

 

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 可以

如何解决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中sys.path中的导入和路径顺序

我有一个关于 Python 2和 Python 3默认放置在sys.path中的导入顺序和路径的问题.我比较了Python 2.7和3.4中sys.path中的默认路径,并将PYTHONPATH设置为空.我在Ubuntu 14.10上.

对于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中的另一种方式?

解决方法

我很确定这是一个ubuntu的东西,而不是Python的东西.检查全局站点自定义(在/etc/python2.7和/etc/python3.4中)以及/usr/lib/python2.7和/usr/lib/python3.4中的site.py文件.

Python 3 基础教程 20-Python 中导入模块和包

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模块导入

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 环境变量和import模块导入的详细内容,更多请关注php中文网其它相关文章!

我们今天的关于python 类 --导入类python导入类中的方法的分享就到这里,谢谢您的阅读,如果想了解更多关于pip 无法导入 Cython 但 python setup.py install 可以、Python 2和Python 3中sys.path中的导入和路径顺序、Python 3 基础教程 20-Python 中导入模块和包、Python Day05 python 环境变量和import模块导入的相关信息,可以在本站进行搜索。

本文标签: