day18继承和邮件自动发送

总结

1. 继承
  • 什么是继承

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

    """
    class 类名(父类1, 父类2, ...)
    	pass
    
    定义类的时候如果没有写继承关系,那么这个类默认继承python的基类:obhect
    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()
    print(stu.name, stu.age, stu.gender)
    
    stu.func1()
    Student.func2()
    Student.func3()
    
  • 子类中添加属性和方法

    """
    1)添加类属性,方法
    直接在子类中添加新的类属性和新的方法
    2)对象属性
    在子类的__init__方法中添加新的对象属性,同时使用super()去调用父类的__init__
    
    super的用法:
    super(类, 对象).方法()  -  调用指定类的父类的指定方法
    """
    
  • 类中的方法的调用

    """
    在通过类或者对象调用方法的时候,会先看当前类是否存在这个方法,如果存在就直
    接调用,如果不存在就是看父类中有没有对应的方法,如果由就调父类中这个方法,如
    果没有就看父类的父类...以此类推,如果找到基类都没有找到这个方法,程序才报错
    """
    
    class A:
        x = 10
    
        def __init__(self):
            self.aa = 10
            self.bb = 20
    
        def func1(self):
            print('A中的对象方法')
    
    class B(A):
        y = 'abc'
    
        def __init__(self):
            super().__init__()       # 调用当前类的父类的__init__方法
            self.study_id = '001'
            self.school = '清华大学'
    
        def func2(self):
            print('B中的对象方法')
    
        @classmethod
        def func3(cls):
            print('B中的类方法')
    
    b = B()
    b.func1()
    b.func2()
    print(B.x, B.y)
    B.func3()
    
    print(b.study_id, b.school)
    print(b.aa, b.bb)
    
2. 多继承
  • 多继承只能继承一个对象属性(继承第一个)

    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)  报错,只能继承一个对象属性
    
3. 私有化
  • 私有化

    """
    类的内容的访问权限分为三种
    公开的:在类的内部和类的外部都可以使用,并且可以被继承
    保护的:在类的内部可以使用,也可以被继承,但是不能在类的外部使用
    私有的:只能在类的内部使用,不能被继承也不能在内的外部使用
    
    从真正意义的访问权限上讲,python类中所有的内容都是公开的, python的私有化是假的私有化
    """
    
  • 在需要私有化的属性名或者方法名前加__(不能同时在名字的最后加__)

    class A:
        num = 100
        __name = 'abc'
    
        def __init__(self):
            self.x = 100
            self.__y = 200
    
        @classmethod
        def func1(cls):
            print('类的内部num:', 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': 100, '_A__y': 200}
    print(a._A__y)
    
4. 邮件自动发送
  • 登陆邮箱

    1. 链接邮箱服务器
    2. 登陆邮箱
  • 准备需要发送的邮件

    1. 创建一个空的邮件对象
    2. 设置邮件主题
    3. 设置邮件发送者
    4. 设置邮件接收者
    5. 添加正文
  • 发送邮件

    import smtplib
    from email.mime.multipart import MIMEMultipart  # MIMEMultipart  -  邮件类
    from email.header import Header
    from email.mime.text import MIMEText
    
    connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
    
    connect.login('QQ邮箱', '授权码')
    
    email = MIMEMultipart()
    
    email['Subject'] = Header('主题名', 'utf-8').encode()
    
    email['From'] = 'QQ邮箱 <QQ邮箱>'  # 发送者邮箱
    
    email['To'] = 'QQ邮箱'  # 接收者邮箱
    
    content = MIMEText('hello world!', 'plain', 'utf-8')
    email.attach(content)
    
    connect.sendmail('发送者QQ邮箱', '接收者QQ邮箱', email.as_string())
    connect.quit()
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值