day18-继承和邮件自动发送

01-继承

  • 1.什么是继承

    • 继承就是让子类直接拥有父类的属性和方法。
    • 子类 - 继承者
    • 父类 - 被继承者
  • 2.继承的语法

  • class 类名(父类1,父类2,…): # 多个父类
    pass

  • 定义类的时候如果没有写继承关系,那么这个类默认继承python的基类:object

  • class 类名: == class 类名(object):

# 子类继承父类的属性和方法
class Person:
    num = 61
    def __init__(self):
        self.name = '小明'
        self.age = 18
        self.gender = '男'

    def func1(self):
        print(f'{self.name}今年{self.age}岁')


    @classmethod
    def func2(cls):
        print(f'人类的数量:{cls.num}')


    @staticmethod
    def func3():
        print('人类破环环境')

# 子类
class Student(Person):
    pass


print(Student.num)
stu = Student()
stu.func1()
stu.func2()
stu.func3()

02- 多继承

class Animal:
    num = 100
    def __init__(self):
       self.gender = '雌'
       self.age = 1
    def func1(self):
        print('动物的对象方法')

class Fly:
    name = '飞行器'

    def __init__(self):
        self.max_height = 0
        self.time = 0
        self.speed = 0

    def func2(self):
        print('飞行器的对象方法')

class Bird(Animal,Fly):
    pass


print(Bird.num)
print(Bird.name)


b = Bird()
b.func1()
b.func2()

print(b.age,b.gender)
# print(b.max_height,b.speed,b.time)  #报错。 只会继承第一个父类的对象属性


# mro模型

03-私有化

  • 1.访问权限

    • 类的内容的访问权限分为三种

      • 公开的:在类的内部和类的外部都可以使用,并且可以被继承
      • 保护的:在类的内部可以使用,也可以被继承,但是不能在类的外部使用
      • 私有的:只能在类的内部使用,不能被继承,也不能在类的外部使用

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

  • 2.私有化

    • 在需要私有化的属性名或者方法名前加__ (不能同时在名字的最后也加__)
class A:
    num = 100
    __name = 'abc'

    def __init__(self):
        self.x = 10
        self.__y = 20

    @classmethod
    def func1(cls):
        print('类的内部',A.num)
        print('类的内部的__name',A.__name)


A.func1()
print(A.num)

# print(A.__name)   # 不能在外部使用

a = A()
print(a.x)
# print(a.__y)
print(a.__dict__)   # {'x': 10, '_A__y': 20}

print(a._A__y)  # 20

04 - 发送邮件的基本流程

  • 1.准备账号
    • 1)什么邮箱 2)邮箱账号 3)邮箱密码
import smtplib
# 1.登录邮箱
# 1).连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com',465)

# 2).登陆邮箱账号
connect.login('2545388462@qq.com','slfarzslfhwsdjcd')


# 2.准备需要发送的邮箱
from email.mime.multipart import MIMEMultipart  # MIMEMultipart 邮件类
from email.header import Header
from email.mime.text import MIMEText
# 1)创建一个空的邮件对象
email = MIMEMultipart()

# 2)设置邮件主题
email['Subject'] = Header('第一封自动发送的邮件','utf-8').encode()


# 3)设置邮件发送者
email['From'] = '2545388462@qq.com <2545388462@qq.com>'

# 4)设置邮件接收者
email['To'] = '2046719225@qq.com'

# 5)添加正文
content = MIMEText('你好!这是一封自动发送的邮件!祝你开心每一天!','plain','utf-8')
email.attach(content)


# 3.发送邮件
connect.sendmail('2545388462@qq.com','2046719225@qq.com',email.as_string())
connect.quit()

05-发送超文本邮件内容

# 1.准备账号
# 1)什么邮箱 2)邮箱账号 3)邮箱密码

# 登录邮箱
# 1)连接邮箱服务器  smtp.qq.com

import smtplib
# 1.登录邮箱
# 1).连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com',465)

# 2).登陆邮箱账号
connect.login('2545388462@qq.com','slfarzslfhwsdjcd')


# 2.准备需要发送的邮箱
from email.mime.multipart import MIMEMultipart  # MIMEMultipart 邮件类
from email.header import Header
from email.mime.text import MIMEText
# 1)创建一个空的邮件对象
email = MIMEMultipart()

# 2)设置邮件主题
email['Subject'] = Header('第一封自动发送的邮件','utf-8').encode()


# 3)设置邮件发送者
email['From'] = '2545388462@qq.com <2545388462@qq.com>'

# 4)设置邮件接收者
email['To'] = '2046719225@qq.com'

# 5)添加正文
with open('content.html',encoding='utf-8') as f:
    content = MIMEText(f.read(),'html','utf-8')
# content = MIMEText('你好!这是一封自动发送的邮件!祝你开心每一天!','plain','utf-8')
email.attach(content)


# 3.发送邮件
connect.sendmail('2545388462@qq.com','2046719225@qq.com',email.as_string())
connect.quit()

06-发送附件

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


# from email.mime.
# 1.登录邮箱
connect = smtplib.SMTP_SSL('smtp.qq.com',465)
connect.login('2545388462@qq.com','slfarzslfhwsdjcd')
# 2.构建邮箱
email = MIMEMultipart()
email['subject'] = Header('发送附件','utf-8').encode()
email['From'] = '发件人昵称 <2545388462@qq.com>'
email['To'] = '收件人昵称 <2046719225@qq.com>'

# 1)添加图片附件
# 打开图片
with open('1.jpg','rb') as f:
    # 创建图片附件
    image = MIMEImage(f.read())
# 设置图片为附件
image['Content-Disposition'] = 'attachment; filename = "aaa.jpg"'
# 将图片附件添加到邮件中
email.attach(image)

content = MIMEText('你好!这是一封自动发送的邮件!','plain','utf-8')
email.attach(content)
# 3.发送邮件
connect.sendmail('2545388462@qq.com','2046719225@qq.com',email.as_string())
connect.quit()


# 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)
#
#
# with open('files/luffy21.png', 'rb') as f:
#     # 创建图片对象
#     image = MIMEImage(f.read())
# # 设置图片为附件
# image['Content-Disposition'] = 'attachment; filename="bbb.png"'
# # 将图片附件添加到邮件中
# email.attach(image)
# 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)
#
# # 2) 添加文本文件附件
# 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)
#

作业

一个斗地主扑克游戏类

import random

class Card:
    def __init__(self):
        self.color = ["♥", "♠", "♦", "♣"]
        self.num = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

    def cards(self):
        for x in self.color:
            for y in self.num:
                yield f'{x}{y}'
        yield '小王'
        yield '大王'

    def send_cards(self):
        list = []
        result = self.cards()
        # item = next(result)
        for x in result:
            list.append(x)

        list1 = random.sample(list, 17)
        for x in list1:
            list.remove(x)
        list2 = random.sample(list, 17)
        for x in list2:
            list.remove(x)
        list3 = random.sample(list, 17)
        for x in list3:
            list.remove(x)

        print(list1)
        print(list2)
        print(list3)
        print(list)
c1 = Card()
c1.send_cards()



# ['♥J', '♦7', '♣8', '♣7', '♠2', '♦3', '♦8', '♣K', '♠Q', '♦A', '♦6', '♣3', '♥2', '♥10', '♣Q', '♥3', '♠4']
#['♠8', '♥6', '♠6', '小王', '大王', '♣A', '♠K', '♥7', '♠3', '♦5', '♣J', '♦Q', '♦10', '♥5', '♦K', '♣4', '♦2']
# ['♥K', '♦9', '♠5', '♥9', '♠10', '♣9', '♣2', '♥A', '♥8', '♣10', '♣5', '♥4', '♣6', '♥Q', '♦J', '♠7', '♠9']
#['♠A', '♠J', '♦4']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值