Python 类 初学者笔记
面对象编程:编写表现世界中的事物和景象的类,并基于这些类创建对象,被创建的对象称为实例化。
创建类
class Dog(): #Python中类名称中的首字母要大写 def __init__(self, name, age):#我是一个构造器
#类中的函数都称为【方法】,init__()是个特殊的方法,每当我们根据Dog类创建实例时,Python都会自动的运行它
#self必不可少且必须位于其它形参前面,
# 每个与类相关的方法调用都自动传入self,self让实例能够访问类中的属性和方法 self.name = name#以【self】为前缀的变量,可供类中所有【方法】使用,也可通过【实例】访问,我们称其为【属性】
self.age = age def sit(self):
#self会自动传递name与age
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() + ".")#__init__并未显式的包含return语句,但Python自动返回了这条小狗的实例(name与age)
print("My dog is " + str(my_dog.age) + " years old.")
#print(my_dog.name + my_dog.age)调用属性相加
my_dog.sit()#实例中调用方法,Python在类Dog中查找方法sit()并运行其代码
my_dog.roll_over()
根据类创建多个实例
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")#实例my_dog的打印语句
print("You dog's name is " + your_dog.name.title() + ".")#实例your_dog的打印语句
print("You dog is " + str(your_dog.age) + " years old.")
属性
类中的每个属性都必须有初始值(可以是0和空字符)
class Dog(): def __init__(self, name, age):
self.name = name
self.age = age
self.day = 0#属性day的默认值为0 def update_a(self, new):
'''修改属性值的方法'''
self.day = new
'''禁止任何人把年龄往回调'''
#if new >= self.day :
# self.day = new
#else :
#print("返老还童?")
'''对属性值进行递增'''
# self.day += new
my_dog = Dog('willie',6)
"""修改属性值"""
my_dog.day = 18#通过实例直接修改
my_dog.update_a(18)#通过方法修改
继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。
创建子类时父类必须包含在当前文件中,且位于子类之前,
可使用 super() 将父类与子类关联起来
from car import Car class ElectricCar(Car):#定义子类时必须在括号内指定父类名称 def __init__(self, manufacturer, model, year):
super().__init__(manufacturer, model, year)#让Pyton调用父类的方法__init__(),使ElecticCar包含父类的所有属性 my_tesla = ElectricCar('teska', 'models', 2016)#使用子类创建实例
print(my_tesla.get_descriptive_name())
父类方法重写(覆盖)
在子类中定义一个与父类方法同名的方法,则Python将不会考虑父类中的这个方法,而只关注子类中定义的相应方法
将类作为属性的实例调用:
from car import Car class Battery(): def __init__(self, battery_size=60):
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 == 60:
range = 140
elif self.battery_size == 85:
range = 185
message = "This car can go approximately " + str(range)
message += " miles on a full charge."
print(message) class ElectricCar(Car): def __init__(self, manufacturer, model, year):
super().__init__(manufacturer, model, year)
self.battery = Battery()#将类用作属性 my_tesla = ElectricCar('teska', 'models', 2016)
my_tesla.battery.describe_battery()#将类用作属性的实例调用
导入类模块
从一个模块中导入多个类 from car import Car, ElecticCar
导入整个模块
因为要在类名前加上模块名所以不会发生覆盖,所以需要从一个模块导入很多类时,最好导入整个模块使用。
import car my_car = car.Car('audi', 'a4', 2015)#使用car模块中的类创建实例,需要在类前加上模块名
print(my_car.get_descriptive_name())
my_car = car.ElectricCar('tesla', 'roadster', '2016')
print(my_car.get_descriptive_name)
使用Python标准库collections创建有序字典
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() + ".")
from random import randint#一个很有意思的库随机生成数字 class Die():
'''一个会改变面的骰子'''
def __init__(self, sides=6):
'''控制面'''
self.sides = sides#sides def roll_die(self):
'''转骰子操作'''
for a in range(0,10):#控制循环
x = randint(1, self.sides)
print(x) a = Die()
a.roll_die()
b = Die()
b.sides = 10#改变骰子面数
b.roll_die()
工作流程:
开始时应该让代码结构尽可能简单,尽可能在在一个文件中完成所有工作,再将类移到独立的模块中。
每个模块应包含一段描述,对于其中的类能做什么也应有所描述
在类中使用一个空行来分隔方法;在模块中使用两个空格来分隔类
Python 类 初学者笔记的更多相关文章
- Python 函数 初学者笔记
定义函数 def greet_user(username):#定义一个名为greet_user的函数,username时个形参 print("Hello!" + usernam ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- Python学习笔记之面向对象编程(三)Python类的魔术方法
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分 ...
- 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘
孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...
- 孤荷凌寒自学python第二十三天python类的封装
孤荷凌寒自学python第二十三天python类的封装 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.从怎么样访问类的内部代码块中定义的私有属性说起 类中定义的私有属性和私有方法是无法被 ...
- 孤荷凌寒自学python第二十二天python类的继承
孤荷凌寒自学python第二十二天python类的继承 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自 ...
- Java初学者笔记
Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
随机推荐
- Android教程2020 - RecyclerView显示多种item
Android教程2020 - 系列总览 本文链接 前面我们已经用RecyclerView显示一些数据.也知道如何获取滑动的距离. 前面我们的列表中显示的都是同类数据.如果要在一个列表中显示不同类别的 ...
- Boyer-Moore 算法 Leetcode169
Boyer-Moore 算法 Leetcode169 一.题目 169. 多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假 ...
- Pileup 格式详细说明
转自: https://blog.csdn.net/herokoking/article/details/79276939 Pileup 格式最初是由Sanger Institute的Tony Cox ...
- 奇葩报错0xc0000142
电脑突然蓝屏了一次,后来软件就打不开了,显示无法启动 网上找了一下说估计是蓝屏出现了一些问题注册表信息被删了,让输入命令重新加载一回注册表信息 for %1 in (%windir%\system32 ...
- 搭建DevOps模式的项目
在后端的开发领域,各类开发框架都已经很多,在开发项目时可以根据不同的需要和需求选择合适的开发框架.然而在需要开发一个完善的工程化项目时,仅仅一个后端开发框架是不够的,还面临着在对开发项目的快速迭代中进 ...
- linux --- 杀掉特定端口进程与启用SSH服务
Linux下端口被占用解决 有时候关闭软件后,后台进程死掉,导致端口被占用.下面以JBoss端口8083被占用为例,列出详细解决过程. 解决方法: 1.查找被占用的端口 netstat -tln ne ...
- Spring-cloud微服务实战【八】:API网关zuul
在前面的文章中,我们先后使用了eureka/ribbon/feign/hystrix搭建了一个看似完美的微服务了,那是否还有值得继续优化的地方呢?答案肯定是有的,如果从整个微服务内部来看,基本已经 ...
- 【CMake】CMake GUI构建VS等项目
一.CMake官网(https://cmake.org/)上的介绍: CMake is an open-source, cross-platform family of tools designed ...
- 《Head First Java(第二版)》中文版 分享下载
书籍信息 书名:<Head First Java(第二版)>中文版 作者: Kathy Sierra,Bert Bates 著 / 杨尊一 编译 张然等 改编 豆瓣评分:8.7分 内容简介 ...
- qt creator源码全方面分析(2-10-4)
目录 Plugin Life Cycle Plugin Life Cycle 为了能够编写Qt Creator插件,您必须了解启动或关闭Qt Creator时,插件管理器所采取的步骤. 本节详细描述插 ...