python学习(二十七)邮件发送及面向对象编程(1)

邮件发送

使用邮件发送功能,需要先做以下三点:

1、在邮箱设置里面打开smtp服务

2、开启邮箱授权码,记住这个授权码

3、安装yagmail,  用 pip install yagmail-0.10.212-py2.py3-none-any.whl,如果直接用 pip install yagmail 中文会有乱码

import  yagmail
username='[email protected]'
passwd='ljia1990312' #授权码
mail=yagmail.SMTP(user=username,
                  password=passwd,
                  host='smtp.163.com'
                  #smtp_ssl=True
                   )  #如果用的是QQ邮箱或者使用的公司邮箱有安全协议,需要smtp_ssl=True
mail.send(to=['[email protected]'],#如果多个收件人,写成list
          cc='[email protected]', #抄送
          subject='学习发送邮件', #邮件标题
          contents='你好,你今天开心吗?',#邮件正文
          attachments=[r'C:\Users\acer\Desktop\QQ截图20180317103804.png']
          )
print('发送成功')

面向对象

1、类、对象、实例、实例化、属性、方法的概念

1)类:一个种类,一个模型

2)对象:指具体的东西,模型造出来的东西叫做对象

3)实例:实例和对象是一个意思

4)实例化:实例化就是造东西的过程

5)属性:就是变量

6)方法:就是类里面的函数

 2、经典类与新式类

1)经典类:

 class Person:
       pass    #类名字首字母大写    经典类

2)新式类:

class Person2(object):   #新式类
     pass

在python3里面,经典类和新式类没有什么区别,都是广度优先。

在python2里面,多继承的时候,经典类深度优先,形式类广度优先。

在python2里面经典类不能使用super()方法

在python3里面经典类和新式类都能用

3、构造函数及实例化使用

class Person:
    def __init__(self):#构造函数,在类实例化的时候执行的函数,并不是必须要写的
        self.nose=2 #属性,变量
        self.face=2
        self.head=10
        self.wing=4
        print('开始测试')
    def driver(self):
        print('测试一下')
    def fly(self):
        print('可以飞')
    def eat(self):
        print('火锅,蛋糕')

__init__(self)是构造函数,在一个类里面非必写。并且在使用变量的时候前面都以self.开头,则在类的其他函数里面都可以直接self.调用这些变量。

类在使用的时候,首先必须实例化,类名+()来是实例化,如下

zz=Person() 

在实例化的时候就会执行构造函数,所以以上实例化后,会执行构造函数,输出内容变为:“开始测试”’,就是构造函数里面最后一句print的值

要使用类里面的变量或者函数的话,在实例化后,直接用实例化的名称加函数名或变量名即可,具体如下:

zz.eat()   #输出eat函数执行内容
zz.fly()     #输出fly函数执行内容
zz.fly()      #再次输出fly函数执行内容
zz.driver()  #输出driver函数执行内容
print(zz.wing)  #输出wing变量值
print(zz.nose)  #输出nose变量值

4、类传入参数使用及在函数中调用其他函数

class Person:
    def __init__(self, name):  # 传入参数
        self.name = name   将传入参数变为类里面的变量
        self.nose = 2  
        self.face = 2
        self.head = 10
        self.wing = 4
        print('开始测试')

    def driver(self):
        print('测试一下')
        self.eat()  # 调用类里面的函数

    def fly(self):
        print('%s可以飞' % self.name)  # 获取类里面的变量

    def eat(self):
        print('%s吃火锅,蛋糕' % self.name)

类传入参数,将此参数变为类里面的变量,则之后类里面的其他地方都可以直接使用self.+变量名进行调用。

以上代码中,类传入参数name,在构造函数中,将传入参数变为类里面的变量slef.name,在后面的fly及eat函数中可以直接调用使用。

并且类里面的函数可以相互调用。

za = Person('刘佳')
za.fly()
za.driver()
print(za.name)

执行结果为:

开始测试
刘佳可以飞
测试一下
刘佳吃火锅,蛋糕
刘佳

 

猜你喜欢

转载自www.cnblogs.com/emilyliu/p/9080123.html