Python 类与对象
1、基本概念
面向对象:是一种抽象,是一种用分类的方式看待问题的方法,用 Java 的编程思想来说就是:万物皆对象;面向对象有三大特性:封装、继承、多态。
类:一个分类就是一个类
对象:对象是根据类创建出来的一个个实例
2、基本使用
2、1类的定义
# 类的定义
class Car :
pass
2、2对象的创建
# 创建 Car 的实例对象 c
class Car :
pass
c = Car()
2、3类中定义属性
# 定义 Car 类的属性 name
class Car :
name = ‘BMW’
3、类中的方法
3、1类方法
只能访问类变量,不能访问实例变量
1、类方法通过@classmethod装饰器实现,只能访问类变量,不能访问实例变量;
2、通过cls参数传递当前类对象,不需要实例化。
class Car(object):
name = 'BMW'
def __init__(self, name):
self.name = name
@classmethod
def run(cls,speed):
print(cls.name,speed,'行驶')
# 访问方式1
c = Car("宝马")
c.run("100迈")
# 访问方式2
Car.run("100迈")
输出结果:
BMW 100迈 行驶
BMW 100迈 行驶
3、2静态方法
静态方法是类中的函数,不需要实例
1、用 @staticmethod 装饰的不带 self 参数的方法;
2、静态方法名义上归类管理,实际中在静态方法中无法访问类和实例中的任何属性;
3、调用时并不需要传递类或实例
class Car(object):
name = 'BMW'
def __init__(self, name):
self.name = name
@staticmethod
def run(speed):
print(Car.name,speed,'行驶')
# 访问方式1
c = Car ("宝马")
c.run("100迈")
# 访问方式2
Car.run("100迈")
输出结果:
BMW 100迈 行驶
BMW 100迈 行驶
3、3实例方法
实例方法就是类的实例能够使用的方法
# 第一个参数强制为实例对象 self
class Car(object):
name = 'BMW'
def __init__(self, name):
self.name = name
def run(self,speed):
print(self.name,speed,'行驶')
# 访问
c = Car("宝马")
c.run("100迈")
输出结果:
宝马 100迈 行驶
4、类的继承
# 父类
class Car(object):
name = "BMW"
def __init__(self,name):
self.name = name
def run(self,speed):
print(self.name,speed,"行驶")
# 子类
class BMWCar(Car):
conf = "经济适用型"
pass
# 调用父类 Car 中 run 方法
bc = BMWCar("BMW经济适用型轿车")
bc.run("100迈")
5、类的多态
# 父类
class Car(object):
name = "BMW"
def __init__(self,name):
self.name = name
def run(self,speed):
print('Car-->',self.name,speed,'行驶')
# 子类1
class BMWCar(Car):
def run(self,speed):
print('BMWCar-->',self.name,speed,'行驶')
# 子类2
class SVWCar(Car):
def run(self,speed):
print('SVWCar-->',self.name,speed,'行驶')
# 调用 run 方法
c = Car('Car')
c.run('120迈')
bc = BMWCar('宝马')
bc.run('100迈')
sc = SVMCar('大众')
sc.run('80迈')
# 输出结果
Car--> Car 120迈 行驶
BMWCar--> 宝马 100迈 行驶
SVWCar--> 大众 80迈 行驶