范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

2022年5月21日学习笔记

  Python学习笔记 第九章 类一、创建和使用类二、使用类和实例三、继承四、导入模块五、Python标准库六、注
  一、创建和使用类
  1、类和函数的区别
  类(class):类是面向你对象的,class可以保存一此属性的状态,同时也起到模板的作用,把一些通用的东西写进类定义中,也就是在’init’中。class有点像是将多个函数进行功能性封装
  函数:函数更像是面向过程编程,更易理解,但是当系统较大时,重复性就会增多。
  使用class Name() 来创建一个Name类,类中包含许多方法(函数),根据类来创建实例XingMing = Name(),实例可以用句点表示法调用类中的方法。
  一个类包含了一系列实例的通性,众多根据类创建的实例可以使用句点表示法调用类中的方法。
  2、创建Dog类class Dog():  def __init__(self,name,age):   self.name = name   self.age = age  def sit(self):   print(self.name.title() + " is now sitting.")  def roll_over(self):   print(self.name.title() + " rolled over!") my_dog = Dog("willie", 6) print("My dog"s name is " + my_dog.name.title() + ".") print("My dog is " + str(my_dog.age) + " years old.") my_dog.sit() my_dog.roll_over()  输出结果为: My dog"s name is Willie. My dog is 6 years old. Willie is now sitting. Willie rolled over!在Python中,首字母大写的名称指的是类,因为要从空白创建这个类,所以类定义中的括号是空的。 _ init _ ()是类中的默认方法,每次根据类创建实例时,Python都会自动运行它。 形参self必不可少,Python调用_ init _()方法来创建实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 创建Dog实例时,Python将diaoyongDog类的方法_ init _(),通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name和age)提供值。 以self为前缀的变量都可供类中的所有方法使用,可以通过类的任何实例来访问这些变量。 像self.name、self.age这样可以通过实例访问的变量称为属性。 属性参数传递给_ init _,使用self.属性来给实例赋予属性。 访问属性 :my_dog.name,Python先找到实例my_dog,再查找与这个实例相关联的属性。 调用方法 :my_dog.sit()。 创建实例后,以实例名替代self,如my_dog.name相当于self.name。 class People():  def __init__(self, name, age, weight):   self.name = name   self.age = age   self.weight = weight  def walk(self):   print(self.name.title() + " is now walking on the road.")  def die(self):   print(self.name.title() + ""s weight is " + str(self.weight) + " when he was sent to the crematorium.") zhang = People("Zhang San", 18, 200) print(zhang.name.title() + " is " + str(zhang.age) + " years old.") zhang.walk() zhang.die()  输出结果为: Zhang San is 18 years old. Zhang San is now walking on the road. Zhang San"s weight is 200 when he was sent to the crematorium.二、使用类和实例
  1、Car类 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title() my_new_car = Car("audi", "a4", 2016) print(my_new_car.get_descriptive_name())  输出结果为: 2016 Audi A4.
  2、给属性指定默认值 直接在方法中创建一个变量,并赋予初始默认值 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 0 #赋予默认值0  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.") my_new_car = Car("audi", "a4", 2016) print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()  输出结果为: 2016 Audi A4. This car has 0 miles on it.也可像给形参赋予默认值一样:(更易理解) class Car():  def __init__(self,make,model,year,odometer_reading=0):   self.make = make   self.model = model   self.year = year   self.odometer_reading = odometer_reading  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.") my_new_car = Car("audi", "a4", 2016) print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()  输出结果: 2016 Audi A4. This car has 0 miles on it.
  3、直接修改属性的值 可在类外直接对该变量进行赋值,此时Python会使用新赋予的值而非默认值 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 0 #赋予默认值0  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.") my_new_car = Car("audi", "a4", 2016) my_new_car.odometer_reading = 23 print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()  输出结果为: 2016 Audi A4. This car has 23 miles on it.也可在定义实例时直接传入实参 class Car():  def __init__(self,make,model,year,odometer_reading=0):   self.make = make   self.model = model   self.year = year   self.odometer_reading = odometer_reading  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.") my_new_car = Car("audi", "a4", 2016,23) print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()  输出结果为: 2016 Audi A4. This car has 23 miles on it.通过方法修改属性的值 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!") my_new_car = Car("audi", "a4", 2016) my_new_car.update_odometer(5) print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()  输出结果为: You can"t roll back an odometer! 2016 Audi A4. This car has 10 miles on it.通过方法对属性的值进行递增 class Car():  def __init__(self,make,model,year):  self.make = make  self.model = model  self.year = year  self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:    self.odometer_reading +=miles   else:    print("You can"t roll back an odometer!") my_used_car = Car("audi", "a4", 2016) print(my_used_car.get_descriptive_name()) my_used_car.update_odometer(23500) my_used_car.read_odometer() my_used_car.increment_odometer(100) my_used_car.read_odometer()  输出结果为: 2016 Audi A4. This car has 23500 miles on it. This car has 23600 miles on it.三、继承编写类时,并非总要从空白开始,若要编写的类时另一个线现成类的特殊版本,可使用继承。 一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类称为父类,而新类称为子类。 子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。 继承:类括号非空白,使用super()函数关联父子类。
  1、子类的方法_ init _() 创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:    self.odometer_reading +=miles   else:    print("You can"t roll back an odometer!") class ElectricCar(Car):  def __init__(self,make,model,year):   super().__init__(make, model, year) my_tesla = ElectricCar("tesla","model s",2016) print(my_tesla.get_descriptive_name())  输出结果为: 2016 Tesla Model S.创建子类时,父类必须包含在当前文件中,且位于子类前面。 定义子类时,必须在括号内指定父类的名称:ElectricCar(Car)。 super()是一个特殊函数,帮助Python将父类与子类关联起来。 super()._ init  (make, model, year) 这行代码让Python调用ElectricCar的父类的方法  init _(),让ElectricCar实例包含父类的所有属性,父类也成为超类(superclass)。
  2、给子类定义属性和方法 让一个类继承另一类后,可添加区分子类和父类所需的新属性和方法。 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:    self.odometer_reading +=miles   else:    print("You can"t roll back an odometer!") class ElectricCar(Car):  def __init__(self,make,model,year):   super().__init__(make, model, year)   self.battery_size = 70  def describe_battery(self):   print("This car has a " + str(self.battery_size) + "-kwh battery.") my_tesla = ElectricCar("tesla","model s",2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery()  输出结果为: 2016 Tesla Model S. This car has a 70-kwh battery.
  3、重写父类的方法 对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。 可在子类中定义一个与要重写的父类方法同名的方法,这样Python将不会考虑这个父类方法,而只关注在子类中定义的相应方法。 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:    self.odometer_reading +=miles   else:    print("You can"t roll back an odometer!")  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!") class ElectricCar(Car):  def __init__(self,make,model,year):   super().__init__(make, model, year)   self.battery_size = 70  def describe_battery(self):   print("This car has a " + str(self.battery_size) + "-kwh battery.")  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!") my_tesla = ElectricCar("tesla","model s",2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery() my_tesla.fill_gas_tank()  输出结果为: 2016 Tesla Model S. This car has a 70-kwh battery. This car doesn"t need a gas tank!
  4、将实例用作属性 将一个大型类拆分成多个协同工作的小类,并将这些小类的实例用作其他类的一个属性。 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:    self.odometer_reading +=miles   else:    print("You can"t roll back an odometer!")  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!")   class Battery():  def __init__(self,battery_size=70):   self.battery_size = battery_size  def describe_battery(self):   print("This car has a " + str(self.battery_size) + "-kwh battery.") class ElectricCar(Car):  def __init__(self,make,model,year):   super().__init__(make, model, year)   self.battery = Battery()  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!") my_tesla = ElectricCar("tesla","model s",2016) print(my_tesla.get_descriptive_name()) my_tesla.fill_gas_tank() my_tesla.battery.describe_battery()  输出结果为: 2016 Tesla Model S. This car doesn"t need a gas tank! This car has a 70-kwh battery.在其他类中使用实例作为属性:self.类,然后再定义实例时:name.类.function即可。 slef.battery让Python创建一个新的Battery实例(由于没有指定尺寸,因此为默认值70),并将该实例存储在属性self.battery中。 每当方法_ init _()被调用时,都将执行该操作;因此现在每个ElectricCar实例都包含一个自动创建的Battery实例。 my_tesla.battery.describe_battery()让Python在实例my_tesla中查找属性battery,并对存储在该属性中的Battery实例调用方法describe_battery()。
  5、根据电池容量修改续航里程 class Car():  def __init__(self,make,model,year):   self.make = make   self.model = model   self.year = year   self.odometer_reading = 10 #赋予默认值10  def get_descriptive_name(self):   long_name = str(self.year) + " " + self.make +" " + self.model + "."   return long_name.title()  def read_odometer(self):   print("This car has " + str(self.odometer_reading) + " miles on it.")  def update_odometer(self,mileage):   if mileage >= self.odometer_reading:    self.odometer_reading = mileage   else:    print("You can"t roll back an odometer!")  def increment_odometer(self,miles):   if miles >= 0:   self.odometer_reading +=miles  else:   print("You can"t roll back an odometer!")  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!") class Battery():  def __init__(self,battery_size=70):   self.battery_size = battery_size  def describe_battery(self):   print("This car has a " + str(self.battery_size) + "-kwh battery.")  def get_range(self):   if self.battery_size == 70:    range = 240   elif self.battery_size == 85:    range = 270 message = "This car can go approximately " + str(range) message +=" miles on a full charge. " print(message) class ElectricCar(Car):  def __init__(self,make,model,year):   super().__init__(make, model, year)   self.battery = Battery()  def fill_gas_tank(self):   print("This car doesn"t need a gas tank!") my_tesla = ElectricCar("tesla","model s",2016) print(my_tesla.get_descriptive_name()) my_tesla.fill_gas_tank() my_tesla.battery = Battery(85) #修改电池默认值 my_tesla.battery.describe_battery() my_tesla.battery.get_range()  输出结果为: 2016 Tesla Model S. This car doesn"t need a gas tank! This car has a 85-kwh battery. This car can go approximately 270 miles on a full charge.四、导入模块与从其他模块导入函数方法一致 五、Python标准库from collections import OrderedDict favorite_languages = OrderedDict() favorite_languages["jen"] = "python" favorite_languages["sarah"] = "c" favorite_languages["edward"] = "ruby" favorite_languages["phil"] = "python" for name , language in favorite_languages.items():  print(name.title() + ""s favorite language is " + language.title() + ".")  输出结果为: Jen"s favorite language is Python. Sarah"s favorite language is C. Edward"s favorite language is Ruby. Phil"s favorite language is Python.字典能将信息关联起来,但不记录添加键-值对的顺序。 使用collections中的OrderedDict类可以创建字典并记录其中的键-值对的添加顺序。 六、注类名单词首字母大写,不使用下划线;实例名和模块名都采用小写,单词之间加上下划线。 每个类后都应紧定义一个文档字符串简要描述类的功能。 用一个空行分隔方法,用两个空行分隔类。

鸿蒙2。0。0。166更新鸿蒙陆续推送166更新,40PRO已收到并完成更新(并一个MATE20目前还未收到,可能需等待后续推送)。1。28G的更新包,含两个更新包日志。更新完成后个人感觉动画效果和整体使用OPPO真旗舰来了!骁龙895加2K120Hz屏还有120W超级快充OPPO在今年发布了全新的FindX3系列,该机上市后也受到了不少用户的喜爱,其全新的设计也引发了网友的热议。Find系列作为目前OPPO的顶级旗舰系列,其拥有众多的黑科技,这也使苹果将以iPhone13为新起点,打造顶级的影像旗舰苹果iPhone近些年在成像方面的经验和能力,与安卓旗舰相比,并没有太大的优势。根据目前的消息,苹果将以iPhone13为新起点,打造顶级影像旗舰。在更大的摄像头模组和更大的感光元华为MateX3曝光四摄加可折叠全面屏,售价惊人2021年手机市场的变化基本稳定,各家新机基本朝着全面屏和可折叠两大方向在发展,这也使得手机市场可以选择的高端旗舰机越来越多。目前的可折叠屏产品基本集中在安卓阵营,代表厂商有三星小三星GalaxyS21Ultra5G这个手机可以取代你的单反相机了如果您仍然决定将两次旅行的乐趣和冒险融入您的第一个夏季后的COVID度假之旅,那么也许是时候评估您的智能手机是否能满足两年的价值您即将留下的假期回忆。我做到了。今年夏天早些时候,当十年开发经验还会犯的7个错误,你避开了吗?在实际开发的时候经常不会马上意识到自己做了什么,只有出问题之后才会发现自己犯了什么错误。1没有使用合适的ORM数据访问层的代码总是混乱的,这点往往都是到最后了才发现。2没有学会使用没有短板的颈挂式蓝牙耳机HIFIMAN(海菲曼)BW400体验评测受疫情影响近两年TWS真无线蓝牙耳机的市场占有率不断上升,但这类耳机不适合多数剧烈运动的场景,例如跑步和骑行等运动,因为容易抖落,就算日常散步使用很多人都会不小心丢失其中一个耳塞。百元耳机又添一员大将,捷波朗Elite3全新发布作为世界上第一款蓝牙耳机的开创者,Jabra捷波朗在声学领域可谓是颇有造诣,它背靠的GN大北欧集团更是在助听器,通讯设备方面都有着不俗的成就。而按照捷波朗一向对产品品质的日臻完善要围观!HAKII运动型真无线耳机评测防水,好看,但更好听哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您我喜欢HAKII的HAKII运动型真无线耳机来了。此处评测的HAKII运动型真无线耳机具有更合理的贴合设计和更高的防水等级。在颜值就是生产力!Lofree洛斐小浪蓝牙机械键盘使用分享大家好我是zachal。三月初,有朋友给我发来一个键盘的众筹链接,我看过之后的第一感觉是这大概是我见过的颜值能排前三的机械键盘了,而再仔细深究更令人意外,这款键盘居然出自国产品牌L硬磕特斯拉降价!比亚迪汉推506km版车型,售20。98万,性价比更高在新能源汽车市场中,比亚迪一直占据着较多的市场份额,备受关注的当属比亚迪汉EV车型。比亚迪汉自上市以来持续引领着国内新能源轿车市场,创下了上半年中大型轿车销量榜第5名的好成绩。在中
三星又造了一个巨大的相机传感器,将搭载在VivoX80上三星是全球第二大移动设备摄像头传感器制造商,基本上所有的智能手机品牌都使用过三星的传感器。在过去的几年中,这家韩国科技巨头已经推出了多种大型相机传感器,包括ISOCELLGN1和I蓝牙技术无线技术小知识蓝牙与WiFi的区别WiFi是一项重要的无线网路通信技术,目前该技术由WiFi联盟所持有,而与之相似的无线通信技术还有蓝牙,即蓝牙技术联盟管理的通信标准。蓝牙与WiFi的区别1工作方式不同WiFi全称最低仅需2799元骁龙8手机想要性价比就选这三款新一代骁龙8处理器于去年12月1日上市。其采用三星4nm制程工艺,内置八核KryoCPU,包括一个基于CortexX2的3。0GHz超大核,GPU性能相比上一代更是有高达50以上的打造性能监控平台在做性能测试的时候,你是如何监控被测试系统的硬件资源的,如果是云平台,那么一般提供的有可视化的监控信息,如果是本地服务,只能通过系统命令(如pstoplsof等)查看。我们可以自己使用三年,华为畅享10S依然是手机界的王者三年前图便宜买的畅享10S,万万没想到三年后依然流畅丝滑,前沿的设计放在今天依然碾压全场。外观使用三年,除了开封那天就没见过手机后盖什么样,现在已经忘了啥样了。前面贴膜后面手机壳,开源Nginx可视化配置工具,快速搞定Nginx配置难题开源精选是我们分享GithubGitee等开源社区中优质项目的栏目,包括技术学习实用与各种有趣的内容。本期推荐的是一个Nginx界面配置工具nginxWebUI。nginxWebU留给造车新势力的时间不多了出品虎嗅汽车组作者王笑渔编辑周到头图大空头知乎上有一个浏览量超150万的提问BBA在电动时代会跌落神坛吗?这其中,就有一条高赞的回答给出的判断是新能源时代的BBA是真的离跌落神坛不互联网工资解读总包100万,实际月薪仅3万互联网是高薪行业,互联网的从业者动不动就号称自己年薪百万,实际到手真的有那么多吗?一位互联网从业者给大家解读了所谓的互联网高薪base近40k,实际30K出头总包100万,实际月薪怎么选电池?电池怎么选?什么电池耐用?苹果手机怎么选电池?手机用一两年总是为换电池纠结,,到底什么电池好?广告和水军哪个可信?水军难分,广告避重就轻夸大其词,所以你可能买过的几个牌子电池用起来都差不多,就常常会陷入误区,第三方电池都不怎么两款旗舰级综合性能强悍的手机配置解读大多数读者在看手机配置参数解读时,并不会像看小说一样内容精彩生动,甚至是在看各项参数数据解读时会生涩难懂枯燥乏味。虽然看小说可以愉悦心情,但是读懂手机配置解读,不仅能了解到最新的高国内首款!大算力自动驾驶芯片华山二号A1000已投入量产本报记者郑馨悦4月25日,证券日报记者从自动驾驶芯片公司黑芝麻智能获悉,公司研发的华山二号A1000自动驾驶计算芯片已完成全部量产认证,预计年内量产上车,实现L2L3级别自动驾驶功