Python3 类知识点整理

一、前言。

学习本章参考的是小黄。
主观感觉类很像C中的而结构体,但python中对类的理解很形象。也有点像函数。
类总括着实例,实例是大类中的一个个体。

二、类的使用

1、创建。

(1)创建类

 class Dog():
 	""" 描述 """
	def __init__(self,name,age):
		""" 初始化属性 """
		self.name=name
		self.age=age
	def sit(self):
		""" 模拟狗坐下 """
		print(self.name.title()+" is now sitting.")

类中的函数称为方法
定义方法时,必须带有形参self,并且放在第一个形参的位置。
以self为前缀的变量可供类中所有方法调用,并可通过实例来访问这些变量。像这样可以通过实例访问的变量称为属性 __init__()内的那些**)**

此处方法sit()不需要其他信息,所以只用一个形参self即可。

(2)创建实例

 class Dog():
 	""" 描述 """
	def __init__(self,name,age):
		""" 初始化属性 """
		self.name=name
		self.age=age
	def sit(self):
		""" 模拟狗坐下 """
		print(self.name.title()+" is now sitting.")
my_dog=Dog('Willie',6)
print(my_dog.name)
print(my_dog.age)

倒数第三行创建了类,并设置了属性
倒数后两行访问了属性
我们也可以创建多个实例,实例的属性不会相互影响。

2、调用

(1)调用方法

 class Dog():
 	""" 描述 """
	def __init__(self,name,age):
		""" 初始化属性 """
		self.name=name
		self.age=age
	def sit(self):
		""" 模拟狗坐下 """
		print(self.name.title()+" is now sitting.")
my_dog=Dog('Willie',6)
print(my_dog.name)
print(my_dog.age)
my_dog.sit()

倒数第一行

调用的方法也可以是有返回值的,会返回相应的值。

(2)调用属性

注意,所有属性都要设置默认值。即在__init()__中赋值。

法一:直接修改
def Dog():
	-snip-

my_dog.name=28
法二:通过方法修改
def Dog():
	-snip-
	def updata_age(self):
		self.age+=1
my_dog=Dog('Willie',6)
my_dog.updata_age()

3、继承

编写类时,可以在父类的基础上增加一些子类的特有属性。也就是说,如果你要编写的类是另一个现成类的特殊版本,可以使用继承。在原类的基础上加一些属性给这个特殊类。

(1)子类方法__init__()

创建子类

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 = 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):
		self.odometer_reading += miles
 class ElectricCar(Car):					    #定义子类,括号里要有父类名字
	"""电动汽车的独特之处"""
	def __init__(self, make, model, year):
		"""初始化父类的属性"""
		super().__init__(make, model, year)		
			'''
		super()函数,帮助其与父类关联起来,使其可以调用父类的
		方法__init__(),让子类的实例也有父类的所有属性
		父类称为子类的superclass
			'''
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

有了以上代码,ElectricCar已经有了Car的属性。
之后可以在ElectricCar类里添加特有属性,在super语句后加上self.TeYouShuXing=xxx即可。
父类必须和子类包含在同一个程序文件之前,并且在子类前面。

(2)重写父类的方法

当子类所需方法与父类不同时,可以在子类中重写一个与要更改的方法同名的方法,这样,在调用子类时用的是子类的方法而不是父类的。如:

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

4、导入类

与函数巨相似,一般直接把包含类的整个模块导入。

5、编码规范

类命名以驼峰命名法,不用下划线
要有字符描述类的内容、功能等
类中:可用空行分隔方法
模块中:可用两个空行分隔类
同时需要导入标准库的模块和自己编写的模块时,先写导入标准库的模块,再添加一个空行,再写自己的类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值