python进阶(6)--类
文档目录:
---------------------------------------分割线:正文--------------------------------------------------------
一、创建类
1、类由类名(首字母大写)、类的实例、类的方法组成
2、举例创建类
class Dog():
"""模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name,age"""
self.name=name
self.age=age
def sit(self):
"""小狗蹲下"""
print(f"{self.name} is now sitting.")
def roll_over(self):
"""小狗打滚"""
print(f"{self.name} rolled over") my_dog=Dog('xiaobai',12)
print(f'My dog\'s name is {my_dog.name}.')
print(f'My dog is {my_dog.age} years old')
查看结果
My dog's name is xiaobai.
My dog is 12 years old
二、使用类与实例
1、创建实例(使用Dog类)
my_dog=Dog('xiaobai',12)
2、使用方法(使用Dog类)
my_dog.sit()
my_dog.roll_over()
3、给属性指定默认值(使用Car类)
class Car:
"""汽车信息"""
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
#给默认值
self.odometer_reading=0
def get_descriptive_name(self):
"""返回描述性信息"""
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"""打印汽车的里程"""
print(f"This car has {self.odometer_reading} miles on it.") my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
查看结果:
2019 Audi A4
This car has 0 miles on it.
4、修改属性的值(使用Car类)
my_new_car.odometer_reading=3000
my_new_car.read_odometer()
查看结果:
This car has 3000 miles on it.
5、通过方法修改属性的值(使用Car类)
#新增修改里程数的方法
def update_odometer(self,mileage):
"""将里程表读数设置为指定值"""
self.odometer_reading=mileage
查看实例并调用方法
my_new_car=Car('audi','a4',2019)
my_new_car.update_odometer(50)
my_new_car.read_odometer()
查看结果:
This car has 50 miles on it.
三、继承
1、子类的init()方法
from test06_class_car import Car
#ElectricCar继承Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
print(my_tesla.get_descriptive_name())
查看结果:
2020 Tesla Model S
2、子类定义属性的方法(使用ElectricCar类)
from test06_class_car import Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#设置电瓶容量初始值
self.battery_size=75
#新增方法
def describe_battery(self):
"""打印电瓶容量信息"""
print(f"This car has a {self.battery_size} -kwh battery.") #创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.describe_battery();
查看结果:
This car has a 75 -kwh battery.
3、重写父类的方法
#Car类新增方法:油箱
def fill_gas_tank(self):
print("This car needs a gas tank!")
在子类中重新父类的方法,python会执行子类的方法,忽略父类的
#重写父类方法
def fill_gas_tank(self):
"""电动车没有油箱"""
print("This car doesn't need a gas tank!")
实例化并调用重写的方法
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.fill_gas_tank()
查看结果:
This car doesn't need a gas tank!
4、将实例用作属性
from test06_class_car import Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#设置电瓶容量初始值
self.battery=Battery()
class Battery:
"""电动汽车电瓶的信息"""
def __init__(self,battery_size=75):
"""初始化电瓶的属性"""
self.battery_size=battery_size def describe_battery(self):
"""打印电瓶容量信息"""
print(f"This car has a {self.battery_size} -kwh battery.")
def get_range(self):
"""打印电瓶的续航里程"""
if self.battery_size==75:
range=260
elif self.battery_size==100:
range=315
print(f"This car can go about {range} miles on a full charge") #创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
查看结果:
This car has a 75 -kwh battery.
This car can go about 260 miles on a full charge
python进阶(6)--类的更多相关文章
- Python进阶_类与实例
上一节将到面对对象必须先抽象模型,之后直接利用模型.这一节我们来具体理解一下这句话的意思. 面对对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如studen ...
- Python进阶-XVIV 类的内置方法:__str__ 、__repr__、析构函数(__del__)、双下的call,eq,new,hash 以及item相关的三个方法
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类obj中有: 两个双下方法 obj.__str__ str(obj) obj.__repr__ repr(obj) ...
- Python进阶-XV 类和对象的命名空间 组合
一.类和对象命名空间 1.类中可以定义两种属性 静态属性和动态属性 class Course: language = 'Chinese' # 静态属性 def __init__(self, name, ...
- Python进阶编程 类的成员
类的成员 class A: company_name='老男孩' #静态变量 __iphone='1515151' #私有静态变量 def __init__(self,name,age): #特殊方法 ...
- Python进阶编程 类与类的关系
类与类的关系 依赖关系 # 依赖关系: 将一个类的类名或者对象传给另一个类的方法中. class Elephant: def __init__(self, name): self.name = nam ...
- python进阶:类和对象
@修饰符:将被修饰的函数作为参数,运行修饰函数 实例方法: 静态方法:@staticmethod 类方法:@classmethod 自省:通过一定的机制查询到对象的内部结构 序列类: 列表推导式(例表 ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- python进阶01 面向对象、类、实例、属性封装、实例方法
python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...
- Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程: 1.线程是一堆指令,是操作系统调度 ...
- Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type())
Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type()) 一丶类的结构细分 ...
随机推荐
- 华企盾DSC客户端连不上服务器(客户端在回收站)
解决方法:确保该计算机在CLIENT表recyclebin列中的值为False,最好把所有计算机都改成False,改好后重启DSC服务器,最后重新安装客户端. 或者将客户端从回收站移动到正常的工作组.
- Centos8 硬盘挂载
查看硬盘分区状况 fdisk -l 可以看到数据盘 /dev/vdb 大小为 10Gb,目前还没有进行分区. 对 /dev/vdb 资源盘进行分区 fdisk /dev/vdb //根据提示输入信息: ...
- Havoc C2d的初次使用
Havoc C2 简介 Havoc是一款现代化的.可扩展的后渗透命令控制框架 当前的Havoc版本还处于早期开发版,随着框架的不断成熟,可能会对Havoc的API和核心结构进行大量更改 以下的配置部分 ...
- 隐匿自己的c2服务器(一)
隐匿自己的c2服务器(一) 目录 隐匿自己的c2服务器(一) 服务器设置 安装java环境 启动设置 开启禁ping 微信机器人推送上线信息 ️端口特征修改 证书特征修改 流量特征修改 利用cdn加 ...
- 别再傻傻地用 ifconfig 查地址了!这条命令足以让你摘掉小白工程师的帽子
大家好,我是民工哥. 众所周知,在 Linux 系统中,ip 和 ifconfig 这个两命令的功能十分相似,ifconfig 是 net-tools 中已被弃用的一个命令,很多年前就已经没有维护了. ...
- 面试官:String长度有限制吗?是多少?还好我看过
前言 话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候也遇到了,本人就遇到过面试的时候问这个的 ...
- java进行数据库操作的并发控制的2种方法
本文分享自华为云社区<java进行数据库操作的并发控制>,作者:张俭. 在现代应用编码中,从数据库里面find出来,进行一些业务逻辑操作,最后再save回去.即: Person perso ...
- GaussDB(DWS)查询过滤器原理与应用
摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔离反复被终止的查询,防止烂SQL再次执行. 本文分享自华为云社区<GaussDB(DWS)查询过滤器原理与应用> ...
- 云图说|云数据库GaussDB如何做到卓越性能
摘要:对于数据库来说,性能一直被视为最关键的部分.GaussDB作为华为自主创新研发的分布式关系型数据库,那么华为云数据库GaussDB在提升数据库性能方面都有哪些黑科技呢? 本文分享自华为云社区&l ...
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
摘要:看一个SDK如何拯救初入职场的程序猿小Hi- [职场初体验] 时间过得真快,距离上次给小Hi安排"人脸识别"的开发任务(话接上期:[快速玩转华为云开发]小Hi拍了拍你,基于华 ...