zoukankan      html  css  js  c++  java
  • python学习(二十七)邮件发送及面向对象编程(1)

    邮件发送

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

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

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

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

    import  yagmail
    username='521bbtjia@163.com'
    passwd='ljia1990312' #授权码
    mail=yagmail.SMTP(user=username,
                      password=passwd,
                      host='smtp.163.com'
                      #smtp_ssl=True
                       )  #如果用的是QQ邮箱或者使用的公司邮箱有安全协议,需要smtp_ssl=True
    mail.send(to=['xxx@qq.com'],#如果多个收件人,写成list
              cc='xxx@qq.com', #抄送
              subject='学习发送邮件', #邮件标题
              contents='你好,你今天开心吗?',#邮件正文
              attachments=[r'C:UsersacerDesktopQQ截图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)

    执行结果为:

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

     

  • 相关阅读:
    前端js(一)
    前端CSS
    前端HTML
    视图等
    Navicat使用
    查询语句
    SpringBoot不能直接访问templates下的静态资源
    Mybatis什么时候用${}
    thymeleaf使用restul风格URL
    SpringBoot使用PageHelper
  • 原文地址:https://www.cnblogs.com/emilyliu/p/9080123.html
Copyright © 2011-2022 走看看