python(十四)——包,Pillow,类(构造函数)

目录

 

第三方模块Pillow:非常强大的处理图像的工具库

打印图片属性 

修改图片大小

理解面向对象

python类

创建一个类

实例化一个类

对象的初始状态(构造函数__init__())

self


如果不同的人编写的模块重名了怎么办,为了解决模块命名冲突,引入了按目录来组织模块的方法,称为包

特点:引入了包之后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人发生冲突

注意:目录只有包含一个叫做“__init__.py”的文件才被认作是一个包,主要是为了避免一些滥芋充数的名字,基本上这个文件什么也不写

 

第三方模块Pillow:非常强大的处理图像的工具库

PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow

PIL可以做很多和图像处理相关的事情:

 

打印图片属性 

  • 图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
  • 图像展示(Image Display)。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
  • 图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
#引入三方库
from PIL import Image
#打开图片
i = Image.open(r"C:\Users\asus\Desktop\img\1.jpg")
#打印图片的格式,大小,类型
print(i.format,i.size,i.mode)

修改图片大小

#引入三方库
from PIL import Image
#打开图片
i = Image.open(r"C:\Users\asus\Desktop\img\1.jpg")
#打印图片的格式,大小,类型
print(i.format,i.size,i.mode)
#设置图片大小
i.thumbnail((200,100))
#保存到新图片
i.save(r"C:\Users\asus\Desktop\img\0.jpg","JPEG")

python(十四)——包,Pillow,类(构造函数)_第1张图片

 

理解面向对象

面向过程:

  • 自上而下顺序执行,逐步求精
  • 其程序结构是按功能划分为若千个基本模块,这些模块构成树状结构
  • 各模块之间的关系尽可能简单,在功能上相对独每一-模块内部均是由顺序、选择和循环三种基本结构
  • 其模块化实现的具体方法是使用子程序。
  • 程序流程在写程序时就已决定。
     

面向对象:

面向对象是相对面向过程而言
面向对象和面向过程都是一种思想

面向过程

  • 强调的是功能行为
  • 关注的是解决问题需要哪些步骤

面向对象

  • 将功能封装进对象,强调具备了功能的对象
  • 关注的是解决问题需要哪些对象

面向对象是基于面向过程的。

面向对象的特点:

  1. 是一种符合人们思考习惯的思想
  2. 可以将复杂的事情简单化
  3. 将程序员从执行者转换成了指挥者

完成需求时:

  • , 先要去找具有所需的功能的对象来用。
  •   如果该对象不存在,那么创建- 一个具有所需功能的对象。

 

python类

类:一种数据类型,本身并不占内存空间,根据所学过的Boolean,string,number等类似。用类创建实例化对象(变量),对象占内存空间。

设计类:

  • 类名:首字母大写,其他遵循驼峰原则,见名知道意思
  • 属性:其他遵循驼峰原则,见名知道意思
  • 行为(方法/功能):其他遵循驼峰原则,见名知道意思

格式:

class 类名(父类列表):

    属性

    行为

创建一个类

# object:基类,超类,所有类的父类
#一般没有合适的父类就写object
class Preson(object):
    #定义属性
    name = ""
    age = 0
    height = 0
    weight = 0
    #定义方法,注意方法的参数必须以self当第一个参数,self代表类的实例
    def run(self):
        print("run")
    def eat(self,food):
        print("eat "+food)

实例化对象格式:

对象名 = 类名(参数列表)

注意:没有参数,小括号也不能省略

实例化一个类

#使用类实例化对象
a = Preson()
print(a)
a.run()

python(十四)——包,Pillow,类(构造函数)_第2张图片

at后面的是对象a的内存地址

访问对象的属性和方法

#使用类实例化对象
a = Preson()
a.name = "kkk"
a.age = 18
a.height = 1.7
print(a.name,a.age,a.height)
a.run()
a.eat("apple")

python(十四)——包,Pillow,类(构造函数)_第3张图片

对象的初始状态(构造函数__init__())

__init__():在使用类创建对象时自动调用

注意:如果不显示的写出构造函数,默认会自动添加一个空的构造函数

class Preson(object):
    #定义属性
    name = ""
    #定义方法,注意方法的参数必须以self当第一个参数,self代表类的实例
    def run(self):
        print("run")
    def eat(self,food):
        print("eat "+food)
    def __init__(self):
        print("__init__()")

#使用类实例化对象
a = Preson()
print(a)

python(十四)——包,Pillow,类(构造函数)_第4张图片

给__init__()设置参数,在实例化对象时在类后传参 

class Preson(object):
    def __init__(self,name,sex):
        print(name,sex)
        print("__init__()")

#使用类实例化对象
a = Preson("wang","man")
print(a)

python(十四)——包,Pillow,类(构造函数)_第5张图片

self

self代表类的实例,而非类

哪个对象调用方法,那么这个方法中的self就代表那个对象

 

可以使用__init__去定义self.name

class Preson(object):
    def say(self):
        print("my name is %s,my age is %s" %(self.name,self.age))
    def __init__(self,name,age):
        self.name = name
        self.age = age

#使用类实例化对象
a = Preson("likon",20)
a.say()

也可以直接给say方法赋参数 

class Preson(object):
    def say(self,name,age):
        print("my name is %s,my age is %s" %(name,age))

#使用类实例化对象
a = Preson()
a.say("likon",20)

self.__class__ :代表类名

打印类名:

class Preson(object):
    def say(self):
        print(self.__class__)

#打印类名
a = Preson()
a.say()

 

 

 

 

 

一起学习,一起进步 -.- ,如有错误,可以发评论 

你可能感兴趣的:(python)