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']