学习目标:
-
作业
-
# #问题1:
# 创建一个名为Shape形状的父类,具有一个area方法。
# 然后创建一个Rectangle长方形子类,
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
- #
-
# #问题2:
# 编写程序,创建基类Vehicle,
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
-
笔记:
-
( 继python--2class)__init__,__str__ ,封装__ 重载, main继承
-
练习:
-
run,#面向对象封装摆放家具|未完end.......
学习内容:
-
作业
-
# #问题1:
# 创建一个名为Shape形状的父类,具有一个area方法。
# 然后创建一个Rectangle长方形子类,
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
- #
-
# #问题2:
# 编写程序,创建基类Vehicle,
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
-
笔记:
-
( 继python--2class)__init__,__str__ ,封装__ 重载, main继承
-
练习:
-
run,#面向对象封装摆放家具|未完end.......
目录
# 创建一个名为Shape形状的父类,具有一个area方法。
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
( 继python--2class)__init__,__str__ ,封装__ 重载, main继承
# 创建一个名为Shape形状的父类,具有一个area方法。
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
( 继python--2class)__init__,__str__ ,封装__ 重载, main继承
# 创建一个名为Shape形状的父类,具有一个area方法。
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
作业
# #问题1:
# 创建一个名为Shape形状的父类,具有一个area方法。
# 然后创建一个Rectangle长方形子类,
# 继承自Shape,并具有额外的width宽度和height高度属性。
# 该子类还应该具有一个perimeter周长方法来计算矩形的周长。
class Shape(object):
def area(self):
return "area面积"
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
# 示例用法
canfanxen = Rectangle(1, 2)
print(Shape.area(5))
print(canfanxen.area())
print(canfanxen.perimeter())
>>>area面积
2
6
# #问题2:
# 编写程序,创建基类Vehicle,
# 其成员包括实例属性brand(品牌)和color(颜色),
# 实例方法showInfo()用来输出实例属性brand和color的值;
# 创建派生类Car,继承Vehicle类,新增实例属性seat(座位数),
# 重写基类的实例方法showInfo ()输出所有实例属性的值。
# 利用__init__()构造方法完成Vehicle和Car类的对象初始化工作,并编写测试代码
class Vehicle:
def __init__(self, brand, color):
self.brand = brand
self.color = color
def showInfo(self):
print("Brand:", self.brand)
print("Color:", self.color)
class Car(Vehicle):
def __init__(self, brand, color, seat):
super().__init__(brand, color)
self.seat = seat
def showInfo(self):
super().showInfo()
print("Seat:", self.seat)
# 测试
car = Car("yahooi", "bike", 6)
car.showInfo()
笔记txt:
面向对象编程:
你 userid passwd def: 走 输入
atm def : 校验 取钱 存钱 id
类、对象
统计全校所有学生的信息:姓名、年龄、专业、id
person1 = {
username:"zhangsan",
age:21,
zhuanye:"jike",
id:110
}
person2 = {
username:"lisi",
age:22,
zhuanye:"jike",
id:120
}
类成员:属性
方法:在类里面的函数
姓名、年龄、专业、id
python中创建类的方式:
类名称:采用大驼峰命名法进行区分 UserName
class 类名称(object[father1,,father2]):
def __init__(self,uname,age):
self.uname = uname
self.age = age
def __str__(self):
return "xxx"
#实例化对象
对象名 = 类名(传参)
面向对象的特征: 封装、继承、多态
1、封装
a、类的成员全部封装在类中
b、为了安全考虑,有些属性和方法,不希望被随意访问。因此,大多数情况下,
往往要对对象的属性进行私有化,然后,提供公开的方法进行访问 get_ set_
python进行成员的私有化: _ _属性名 _ _方法名
私有化的成员在class中可以被访问
_方法名、 _变量名 :表示不能被其他模块所引用的 from 模块名 import *
property():
@property
@name.setter
函数重载:存在多个函数名相同的函数,但是参数个数或者参数类型不同,会使得在调用的时候,自动调用对应函数的现象
继承:
父类:被继承的一方 超类、基类
子类
子类不能继承父类的私有成员
方法重写:父类中的方法已经不能满足子类的需求,因此,在子类中,
重新定义一个与父类方法名相同的方法,我们把这种情况,叫做方法重写(方法覆盖)
python中的类的继承,是支持继承多个类的
class Son(Father,Mother):
pass
如果Son类中,也存在__init__,那么一定要在代码的第一行手动的调用父类
# super() 是一个指针,指向自己的父类 ,只用在类中
python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class
这个的class
#############################################################################
__init__
def __init__(self,username,age,zhuanye,id):
self.username = username
self.age = age
self.zhuanye = zhuanye
self.id = id
__str__
__str__
class student(object):
def __str__(self_1):
return f"学生的姓名是{self_1.username},chong:{self_1.chong}"
####################################################################
class Person(object):
def __init__(self,uname,age):
self.uname = uname
self.age = age
def eat(self):
print("吃饭了")
def __str__(self):
return f"该用户的用户名是:{self.uname},年龄是{self.age}"
obj1 = Person("zhangsan",33)
print(obj1)
》》》该用户的用户名是:zhangsan,年龄是33
否则
》》》<__main__.Person object at 0x000001E43589F710>
class Person(object):
def __init__(self,uname,age):
self.uname = uname
self.age = age
def eat(self):
print("吃饭了")
# def __str__(self):
# return f"该用户的用户名是:{self.uname},年龄是{self.age}"
obj1 = Person("zhangsan",33)
print(obj1)
封装:__
class Login(object):
def __init__(self,username,passwd):
self.username = username
self.__passwd = passwd
def get_passwd(self):
return self.__passwd
def set_passwd(self,newPasswd):
self.__passwd = newPasswd
return f"密码被更改为{self.__passwd}"
def __test(self):
print("55555555")
def print_info(self):
print(self.__passwd)
》》》100890
100890
55555555
###############################################################封装2.0
class Login(object):
def __init__(self,username,passwd):
self.username = username
self.__passwd = passwd
@property
def passwd(self):
return self.__passwd
@passwd.setter
def passwd(self,newpasswd):
self.__passwd = newpasswd
# 封装方式2
# newpasswd = property(get_passwd,set_passwd)
if __name__ == '__main__':
obj1 = Login("zhangsan", 123456)
# print(obj1.newpasswd) #相当于调用了get_passwd
# obj1.newpasswd = "新添加的密码" #相当于调用了set_passwd
# print(obj1.newpasswd)
print(obj1.passwd)
obj1.passwd = "新添加的"
print(obj1.passwd)
》》》》》》》》》》》》123456
新添加的
函数重载
def test(a:int,b:float):
print("111111")
def test():
print("2222")
if __name__ == '__main__':
test()
》》》》》》》》》》》》2222
继承
class Father(object):
def __init__(self,uname,age,money):
self.uname = uname
self.age = age
self.money = money
self.__qizi = "王大壮"
def zhuanqian(self):
print("我是父亲的eat方法……")
class Mother(object):
def mother(self):
print("我是mother类中定义的方法")
class Son(Father,Mother):
# pass
def __init__(self,hobby,age,uname):
# super() 是一个指针,指向自己的父类
super().__init__("zhangsan",61,"10000000000000000000")
self.hobby = hobby
self.uname = uname
self.age = age
def zhuanqian(self):
print("更新过的赚钱的技巧")
# def fzhuanqian(self):
# print(super().uname)
f = Father("zhangsan",61,10000000000)
f2 = Father
print(f.money)
son = Son("sing",21,"王二丫")
# print(son.uname)
print(son.age)
son.zhuanqian()
# print(son.money)
#print(son.eat())
# print(son.money)
# son.fzhuanqian()
son.mother()
》》》》》》》》10000000000
21
更新过的赚钱的技巧
我是mother类中定义的方法
main
# 这是一个示例 Python 脚本。
# 按 Shift+F10 执行或将其替换为您的代码。
# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。
def print_hi(name):
# 在下面的代码行中使用断点来调试脚本。
print(f'Hi, {name}') # 按 Ctrl+F8 切换断点。
# 按装订区域中的绿色按钮以运行脚本。
if __name__ == '__main__':
print_hi('PyCharm')
# 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助
》》》》》Hi, PyCharm
练习
1.run
class Person(object):
def __init__(self,name,weight):
self.name = name
self.weight = weight
# run
def run(self):
self.weight -= 0.5
print(f"用户{self.name},跑步了")
def eat(self):
self.weight += 1
print(f"用户{self.name},吃饭了")
def print_info(self):
print(f"用户{self.name}的体重现在是{self.weight}")
xiaoming = Person("xiaoming",75)
print(xiaoming.weight)
print(xiaoming.name)
xiaoming.run()
print(xiaoming.weight)
xiaoming.eat()
print(xiaoming.weight)
xiaoming.print_info()
xiaoli = Person("xiaoli",63)
2.#面向对象封装案例2——摆放家具
#
#面向对象封装案例2——摆放家具
class HouseItem:
# 初始化方法:简化对象的创建
def __init__(self, name, area):
# self.属性 = 形参
self.name = name
self.area = area
# 内置方法__str__(self):简化对象的输出
def __str__(self):
# 这个方法需要注意必须要返回一个字符串
# .2f 表示在遇到小数的时候只保留2位小数
return "[%s] 占地面积是%.2f 平方米" % (self.name, self.area)
class House():
def __init__(self, house_type, area):
self.house_type = house_type
self.area = area
# 剩余面积
self.free_area = area # 剩余面积初始值是总面积
# 家具名称列表
self.item_list = [] # 家具列表一开始是一个空列表
def __str__(self):
# python小技巧: Python能够自动的将一对括号内部的代码连接在一起不出错,因为代码过程所以这里用了小括号
return ("户型:%s\n总面积:%.2f [剩余面积:%.2f]\n家具:%s"
% (self.house_type, self.area,
self.free_area, self.item_list))
# 添加家具方法
def add_item(self, item):
print("要添加%s" % item)
# 1.判断家具的面积
if item.area > self.free_area:
print("%s 的面积太大了,无法添加" % item.name)
return # return关键字可以返回结果也可以不返回结果,下方代码不会被执行
# 2. 将家具添加到家具列表中
self.item_list.append(item.name)
# 3. 计算剩余面积
self.free_area -= item.area
# 1. 创建家具对象
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2.5)
table = HouseItem("餐桌", 2)
print(bed)
print(chest)
print(table)
# 2. 创建房子对象
house1 = House("两室一厅", 80)
# 调用添加方法,把家具都添加到新房子中
house1.add_item(bed)
house1.add_item(chest)
house1.add_item(table)
print(house1)
class HoustItem(object):
def __init__(self,item_name,area):
self.name = item_name
self.area = area
def __str__(self):
return f"{self.name}的占地面积是{self.area}"
class House(object):
def __init__(self,house_type,area):
self.type = house_type
self.area = area
self.free_area =area
self.item_list = []
def add_item(self,item):
# print(f"添加的家具是:{item.area}")
if item.area > self.free_area:
print("剩余空间不够了,放不下了")
else:
self.item_list.append(item.name)
self.free_area -= item.area
def __str__(self):
return f"房子的户型是{self.type},房子的总面积是{self.area},房子的剩余面积是:{self.free_area},家具列表是{self.item_list}"
#########################################################################
if __name__ == '__main__':
bed = HoustItem("席梦思",4)
chest = HoustItem("衣柜",2.5)
table = HoustItem("餐桌",2)
house = House("三室一厅",21)
house.add_item(bed)
house.add_item(table)
print(house)
# print(bed)
# print(chest)
# print(table)
未完end.......
学习时间:
学习时间为不运动的时候,作者咕咕了是去运动(无氧运动和有氧运动都做最好)了,请饶恕。
学习产出:
画工
python--5--len() http://t.csdnimg.cn/wLynX
python--4函数def,本质、值传递、引用传递、默认值参数、*参数名、**变量、lambda [参数]: 函数、偏函数、递归、递归练习 http://t.csdnimg.cn/h9x17
python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()
python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class
python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass http://t.csdnimg.cn/0KDeU
计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织
计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率
计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP
计算机网络分层结构——OSI/ISO、TCP/IP http://t.csdnimg.cn/hLrqY
2章选择、解答 http://t.csdnimg.cn/ONrER
通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽 http://t.csdnimg.cn/TKnyM
数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念
HCIA——30奈奎斯特定理、香农定理 http://t.csdnimg.cn/Yqtch
HCIA——20应用层:C/S、P2P、peer http://t.csdnimg.cn/4i4Og
HCIA——21C/S、P2P、peer的选择
DNS层次域名空间、域名服务器、域名解析的原理 http://t.csdnimg.cn/yeWd6
HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答 http://t.csdnimg.cn/RXPNV
HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接
HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答
HCIA——26E-mall、MIME、POP3、IMAP、电子邮件系统的组成结构、电子邮件的发送,接收过程、MIME 与SMTP 的关系 http://t.csdnimg.cn/smTaR
HCIA——27E-mall、MIME;POP3、IMAP的选择,解答 http://t.csdnimg.cn/xnsXP
HCIIA——28HTTP、万维网、HTML;万维网的工作过程;HTTP 的特点——无连接-TCP、无状态-Cookie、非持久连接-非流水线和流水线;HTTP 的报文结构 http://t.csdnimg.cn/cRcxY
- 技术笔记 1遍
- 有错误请指出,作者会及时改正