首页 > 编程语言 >python - 类

python - 类

时间:2023-07-11 22:14:45浏览次数:50  
标签:python car self odometer print my def

1.类

class Dog:
	"""一次模拟小狗的简单尝试。"""

	def __init__(self, name, age):       # 当根据Dog类创建实例时,python会自动运行__init__()方法。
		"""初始化属性name和age"""
		self.name = name                 # 属性。以self.为前缀的变量可供类中所有方法使用。
		self.age = age

	def sit(self):                       # 类中的函数称为方法。
		"""模拟小狗收到命令是蹲下。"""
		print(f"{self.name} is now sitting.")

	def roll_over(self):
		"""模拟小狗收到命令时打滚。"""
		print(f"{self.name} rolled over!")

创建实例

from dog import Dog

my_dog = Dog('Willie', 6)

# 访问属性
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old")

# 调用方法
my_dog.sit()
my_dog.roll_over()

2. 使用类

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.")

	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):
		"""将里程表读书增加指定的量。"""
		self.odometer_reading += miles

	def fill_gas_tank(self):
		print("This car filled gas tank.")

2.1 子类

from car import Car

class ElectricCar(Car):
	"""电动汽车的独特之处。"""

	def __init__(self, make, model, year):
		"""
		初始化父类的属性。
		再初始化电动汽车特有的属性。
		"""
		super().__init__(make, model, year)
		self.battert_size = 75                    # 子类特有的属性

	def describe_battery(self):                # 子类特有的方法
		"""打印一条描述电瓶容量的消息。"""
		print(f"This car has a {self.battert_size}-kWh battery.")

	def fill_gas_tank(self):                #  重写父类的方法
		"""电动汽车没有油箱。"""
		print("This car doesn't need a gas tank!")

2.2 使用类

from car import Car
from electric_car import ElectricCar

my_car = Car('audi', 'a4', 2019)
print(my_car.get_descriptive_name())
my_car.read_odometer()

my_car.update_odometer(23)
my_car.read_odometer()

my_car.update_odometer(23_000)
my_car.read_odometer()

my_car.update_odometer(100)
my_car.read_odometer()

my_car.increment_odometer(100)
my_car.read_odometer()

print("-------------------------------------------")

my_new_car = ElectricCar('tesla', 'model s', 2019)
print(my_new_car.get_descriptive_name())
my_new_car.describe_battery()
my_new_car.fill_gas_tank()

2.3 将实例作为属性

from car import Car

class Battery:                     
	"""一次模拟电动汽车电瓶的简单尝试。"""

	def __init__(self, battery_size=175):
		"""初始化电瓶的属性。"""
		self.battery_size = battery_size

	def describe_battery(self):
		"""描述电瓶容量"""
		print(f"This car has a {self.battery_size}-kWh battery.")


class ElectricCar(Car):
	"""电动汽车的独特之处。"""

	def __init__(self, make, model, year):
		"""
		初始化父类的属性。
		再初始化电动汽车特有的属性。
		"""
		super().__init__(make, model, year)
		self.battery = Battery()

	def describe_battery(self):
		"""打印一条描述电瓶容量的消息。"""
		self.battery.describe_battery()

	def fill_gas_tank(self):
		"""电动汽车没有油箱。"""
		print("This car doesn't need a gas tank!")

2.4 python标准库

# randint返回两个整数之间(含)的随机整数
from random import randint
randint(1, 6)

# 从列表或元组中随机选一个元素
from random import choice
players = ['charles', 'martina', 'michael', 'florence', 'eli']
first_up = choice(players)
print(first_up)

3. 编码风格

类名采用驼峰命名法,而不使用下划线。实例名和模块名都采用小谢格式,并在单词之间加上下划线。
对应每个类,在类定义后面都应包含一个文档字符串。每个模块也应包含一个文档字符串。
在类中,使用一个空行分割方法;在模块中,用两个空行分割类。
先写导入标准库模块的import语句,再添加一个空行,写导入自定义模块的import。

标签:python,car,self,odometer,print,my,def
From: https://www.cnblogs.com/route/p/17546064.html

相关文章

  • Personal utils in Python
    #-*-coding:utf-8-*-importosimportsysimportshutilfromtimeimportperf_counterfromcollectionsimportdefaultdictfromdatetimeimporttimedeltafromtypingimportSequence,List,Dict,Hashable,Callablefromconfig.commonimportDEBUG#项目......
  • Python抓取音乐音乐
    #encoding=utf8importrequestsfrombs4importBeautifulSoupimporturllib.requestheaders={'Referer':'http://music.163.com/','Host':'music.163.com','User-Agent':'Mozilla/5.0(Wi......
  • 请不要再用被淘汰的Python库了,这几个新的更具优势!
    随着每个Python版本的发布,都会添加新模块,并引入新的更好的做事方式,虽然我们都习惯了使用好的旧Python库和某些做事方式,但现在也时候升级并利用新的和改进的模块及其特性了。Pathlib而不是OSpathlib绝对是Python标准库中最近添加的更大的内容之一,自Python3.4以来,它一......
  • django python manage.py migrate 后报错字段长度超了 django.db.utils.OperationalE
     现象:在models.py将CharField字段的maxlength=修改后,执行ythonmanage.pymigrate 报错django.db.utils.OperationalError:(1118 'Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludes storageoverhead,c......
  • python 之 mysql8 基础
    一、表操作1、查看当前所在的库>selectdatabase():+------------+|database()|+------------+|oldboy|+------------+2、usedatabase选择库3、查看表>showtables 查看有几个表>showcreatetablestudent; 查看创建表的过程+---------+-----------......
  • 使用Python读取图片
    一、Python学习两大道具1.dir()工具作用:支持打开package,看到里面的工具函数示例:(1)输出torch库包含的函数dir(torch)(2)输出torch.AVG函数中的参数dir(torch.AVG)2.help()工具作用:说明书,查看库中函数某个参数的说明或使用方法示例:(1)输出torch库中AVG......
  • 「Python」参数化查询防止SQL注入攻击
    importpymysql#1.链接mysqlconn=pymysql.connect(user='root',password="123",host='127.0.0.1',database='cars'#需要去数据库创建表,无法在此创建) #2.获取一个游标cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#返回的查询结果以字典的形式表示,其......
  • 基于python的租房网站-房屋出租租赁系统(python+django+vue)
    该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。功能介绍平台采用B/S结构,后端采用主流的Python+Django进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、房屋详情页、......
  • 基于python+django的酒店预定网站-酒店管理系统
    该系统是基于python+django开发的酒店预定管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可在github给作者留言。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123源码地址h......
  • 基于python+django的外卖点餐网站-外卖点餐系统
    该系统是基于python+django开发的外卖点餐系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者留言。演示地址前台地址:http://food.gitapp.cn后台地址:http://food.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123源码地址https......