Python类与对象

1 基本概念

1.1 面向对象

面向对象是一种抽象,是一种用分类的方式看待问题的方法,用 Java 的编程思想来说就是:万物皆对象;面向对象有三大特性:封装、继承、多态。

1.2 类

上面说了面向对象是一种用分类的方式看待问题的方法,一个分类就是一个类,可以把类看作是一个抽象的模板,如:Car 类。

1.3 对象

对象是根据类创建出来的一个个实例。

2 基本使用

2.1 类的定义

# 类的定义class Car:    pass

2.2 对象的创建​​​​​​​

# 创建 Car 的实例对象 cclass Car:    pass	c = Car()

2.3 类中定义属性​​​​​​​

# 定义 Car 类的属性 nameclass Car:    name = 'BMW'

3 类中的方法

3.1 内置方法

Python 创建任何一个类的时候,都会包含一些内置的方法,主要包括如下:

方法说明
__init__构造函数,在生成对象时调用
__del__析构函数,释放对象时使用
__repr__打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__乘方

3.2 自定义方法

Python 有三种常见的方法,分别为:实例方法、类方法、静态方法,这三种方法都定义在类中。

3.2.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,'行驶')# 访问方式1c = Car("宝马")c.run("100迈")# 访问方式2Car.run("100迈")

3.2.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,'行驶')		# 访问方式1c = Car("宝马")c.run("100迈")# 访问方式2Car.run("100迈")

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

4 类的继承

定义与使用​​​​​​​​​​​​​

# 基本语法:class ClassName(BaseClassName)# 父类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,'行驶')
# 子类1class BMWCar(Car):    def run(self,speed):        print('BMWCar-->',self.name,speed,'行驶')
# 子类2class SVWCar(Car):    def run(self,speed):        print('SVWCar-->',self.name,speed,'行驶')
# 调用 run 方法c = Car("Car")c.run("120迈")
bc = BMWCar("宝马")bc.run("100迈")
sc = SVWCar("大众")sc.run("80迈")
# 输出结果'''Car--> Car 120迈 行驶BMWCar--> 宝马 100迈 行驶SVWCar--> 大众 80迈 行驶'''

在上面的例子中,我们可以看出:c、bc 、sc 是不同类型的对象,在它们调用 run 方法时,调用的均是各自类中的方法,这就是多态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值