笔记20210520继承和邮件自动发送

笔记继承和邮件自动发送

  1. 继承

    1. 什么是继承

      继承就是让子类直接拥有父类的属性和方法

      子类——继承者

      父类——被继承者

    2. 继承语法

      '''
      class 类名(父类1, 父类2, ...)
          pass  # 属性方法
      
      定义类的时候,如果没有写继承关系,那么这个类默认继承python的基类:object
      class 类名:  相当于 class 类名(object):
      '''
      # 子类继承父类的属性和方法
      class Person:
          num = 20
      
          # 对象属性
          def __init__(self):
              self.name = '小明'
              self.age = 19
              self.gender = '男'
      
          # 对象方法
          def func1(self):
              print(f'{self.name}岁')
      
          # 类方法
          @classmethod
          def func2(cls):
              print(f'人的数量:{cls.num}')
      
          # 静态方法
          @staticmethod
          def func3():
              print(f'环境破坏')
      
      
      class Student(Person):
          pass
      
      
      print(Student.num)
      
      stu = Student()
      print(stu.name, stu.age, stu.gender)
      
      # 调用对象方法
      stu.func1()
      #调用类方法
      Student.func2()
      # 调用静态方法
      Student.func3()
      
    3. 子类中添加属性和方法

      1. 添加类属性和方法

        直接在类中添加属性和方法

      2. 对象属性

        在子类的__init__方法中添加新的对象属性,同时使用super()取调用父类的__init__

        supre(类,类的对象).方法()——调用指定类的父类的指定方法

        class A:
            x = 10
        
            # 对象属性
            def __init__(self):
                self.a = 10
                self.b = 20
        
            # 对象方法
            def func1(self):
                print('A的对象属性')
        
        
        class B(A):
            y ='abc'
        
            # 对象属性
            def __init__(self):
                # super(类, 对象).方法()
                super().__init__()  # 调用当前类的父类的__init__方法,先执行父类方法
                self.study_id = '001'
                self.school = '北大'
        
            # 对象方法
            def func2(self):
                print('B中的对象方法')
        
            # 类方法
            @classmethod
            def func3(cls):
                print('B中的类方法')
        
        
        # 创建对象
        b1 = B()
        
        # 调用对象方法
        b1.func1()
        # 调用对象方法
        b1.func2()
        
        print(B.x, B.y)
        print(b1.school, b1.study_id)
        
    4. 类中方法的调用

      在通过类或者对象调用方法的时候,会先看当前类是否存在这个方法,如果存在就直接调用,如果不存在就看父类中有没有,如果父类中没有,就看父类的父类有没有,依此类推,直到基类中也没有,才会报错。

  2. 私有化

    1. 私有化

      公开的:在类的内部和内的外部都可以使用,并且可以被继承

      保护的:在类的内部可以使用,也可以被继承,但是不能在类的外部使用

      私有的:只能在类的内部使用,不能被继承也不能被类的外部使用

      从正真意义的访问权限上来说,python类中所有的内容(属性和方法)都是公开的。
      python的私有化是假的私有化

    2. 在需要私有化的属性名或者方法前加__(不能在同时名字的后面加__)

      class A:
          num = 100
          __num = 'abc'
      
          def __init__(self):
              self.x = 300
              self.__y = 400
      
          @classmethod
          def func1(cls):
              print('类的内部',A.num)  # 类的内部 100
              print('类的内部的__name:', A.__num)  # 类的内部的__name: abc
      
      
      A.func1()
      print(A.num)  # 100
      
      a = A()
      print(a.x)  # 300
      print(a.__dict__)  # {'x': 100, '_A__y': 200}
      print(a._A__y)  # 400
      
  3. 邮件自动发送

    1. 准备账号

      import smtplib
      # 1.登录邮箱
      # 1)连接邮箱服务器
      connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
      # 2)登录邮箱账号
      connect.login('1228873220@qq.com', 'nrawjoyihyuzhgad')
      
      # 2.准备发送文件
      from email.mime.multipart import MIMEMultipart
      from email.mime.text import MIMEText
      from email.mime.header import Header
      
      # 1)创建一个空的邮件对象
      email = MIMEMultipart()   # 相当于登录以后打开写信操作
      
      # 2)设置邮件主题
      email['Subject'] = Header('发送邮件', 'utf-8').encode()  # 转二进制
      
      # 3)设置邮件发送人
      email['From'] = 'andy <1228873220@qq.com>'
      
      # 4)设置邮件接收人
      email['To'] = '2358944863@qq.com'
      
      # 5)添加正文
      conment = MIMEText('520快乐!', 'plain', 'utf-8')
      email.attah(conment)  # 正文关联邮件
      
      # 6)发送邮件
      connect.sendmail('1228873220@qq.com', '2358944863@qq.com', email.as_string)
      connect.quit()
      
      
  4. 发送超文本邮件

    # 连接登录邮箱
    import smtplib
    connect = smtplib.MMTP_SSL('smtp.qq.com', 465)
    connect.login('1228873220@qq.com', 'nrawjoyihyuzhgad')
    # 准备发邮件
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
    # 创建空文件
    email = MIMEMultipart()
    # 写主题
    email['Subject'] = Hearder('发送邮件', 'utf-8').encode()
    # 发送人
    email['Form'] = 'andy <1228873220@qq.com>'
    # 接收人
    email['To'] = '2358944863@qq.com'
    # 添加正文
    with open('content.html', encoding='utf-8') as f:
        content = MIMEText('f.read()', 'html', 'utf-8')
    email.attach(content)
    # 发送文件
    connect.sendmail('1228873220@qq.com', '2358944863@qq.com', eamil.as_string())
    connect.quit()
    
    
  5. 发送附件

    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.image import MIMEImage
    from email.mime.text import MIMEText
    
    # 1. 登录邮箱
    con = smtplib.SMTP_SSL('smtp.qq.com', 465)
    con.login('726550822@qq.com', 'rnezirniupuqbcch')
    
    # 2.构建邮件
    email = MIMEMultipart()
    email['From'] = '发件人昵称 <726550822@qq.com>'
    email['To'] = '收件人昵称 <15300022703@qq.com>'
    email['Subject'] = Header('发送附件', 'utf-8').encode()
    
    # 0)添加普通正文
    content = MIMEText('hello  world!', 'plain', 'utf-8')
    email.attach(content)
    
    # 1)添加图片附件
    # 打开图片
    with open('files/luffy4.jpg', 'rb') as f:
        # 创建图片对象
        image = MIMEImage(f.read())
    # 设置图片为附件
    image['Content-Disposition'] = 'attachment; filename="aaa.jpg"'
    # 将图片附件添加到邮件中
    email.attach(image)
    
    # 添加多个图片附件
    import os
    for f_name in os.listdir('files'):
        with open(f'files/{f_name}', 'rb') as f:
            image = MIMEImage(f.read())
        image['Content-Disposition'] = 'attachment; filename="bbb.png"'
        email.attach(image)
    
    # 添加文本文件附件
    with open('text/谷歌2017年股票数据.xlsx', 'rb') as f:
        file = MIMEText(f.read(), 'base64', 'utf-8')
    file["Content-Disposition"] = 'attachment; filename="gupiao.xlsx"'
    email.attach(file)
    
    # 发送邮件
    con.sendmail('726550822@qq.com', '15300022703@qq.com', email.as_string())
    con.quit()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值