面向对象的python编程和初步认识类与对象

1.面向对象的思想

我们之前接触的和做的练习其实都是面向过程的编程,其特点是更多聚焦于问题的处理办法,更多的从计算机的角度考虑,注重对于每一个步骤,就像是在教给计算机一种方法。

而面向对象的编程更多的以日常生活的角度考虑和解决问题,更加接近人的思维方式,让人可以从更高的层面考虑系统的构建。

面向对象的优点有更加适合做应⽤的开发,可以使你的代码更加优雅和紧凑,开发效率更⾼,代码复⽤度更⾼、可维护性更好。

⾯向对象是⼀种思维⽅式,它认为万事万物皆对象,程序是由多个对象协作共同完成功能的,所以以后我们要从⾯向过程转向⾯向对象。以⾯向对象的⽅式考虑程序的构建。⾯向对象的核⼼是: 类和对象。

2.类和对象

2.1.类和对象的概念

简单来说,类是具有相同特征和⾏为的对象的集合,是⼀个概念。比如,人类就是一个类。而对象是客观存在的⼀切事物,是类的实例化。比如,你就是一个人类的实例化对象。

从编程的角度来说,类是⽤户⾃定义的数据类型,是模板,不占⽤内存。对象是由类定义的变量,占⽤内存。

2.2.类的定义

# 语法:
class 类名:
    类体 

注意,类的命名规则和变量的命名规则相同。类的命名风格一般为大驼峰(首字母大写),例如BigData。类体必须缩进。⼀个⽂件⾥只放⼀个类。

下面,我们来定义一个PlayGame类,来方便我们下面的讲解,

class PlayGame:
    def __init__(self, gamename, gametype, gamescore):
        self.gamename = gamename
        self.gametype = gametype
        self.gamescore = gamescore

    def play(self):
        print("game start")

    def comment(self):
        print("good game")

2.3.成员属性

成员属性描述的是对象的静态特征,⽐如说狗名字、品种等,其实就是⼀个变量,作⽤域属于对象,不会和类外的全局变量冲突。 python中成员属性可以在构造函数中添加。成员属性属于对象,每个对象的成员属性的值都不同 。

成员属性的语法为,

# 添加属性语法:
对象.成员属性 =# 引⽤⽅式:对象.成员属性 

在PlayGame的例子中成员属性的语句为,

def __init__(self, gamename, gametype, gamescore):
    self.gamename = gamename
    self.gametype = gametype
    self.gamescore = gamescore

这里我们定义了gamename,gametyp和gamescore这三种成员属性。

2.4.对象的创建

对象的创建过程也称之为对象的实例化过程,也就是定义了⼀个类类型的变量或者称之为实例(instance)的过程。

例如,

dmc5 = PlayGame("Devil May Cry 5", "ACT", 10)

这样,我们就实例化了PlayGame类的一个dmc5对象。我们可以调用类内的成员方法,例如,

dmc5.play()
dmc5.comment()

执行结果如下,

game start
good game

2.5.成员方法

成员⽅法其实就是函数,作⽤域在类内,成员⽅法的第⼀个参数必须是self, self代表当前对象,也就是调⽤这个⽅法的对象,这个参数由系统传递。

def play(self):
    print("game start")

def comment(self):
    print("good game")

以上play()和comment()函数就是PlayGame类中的成员方法。

⽅法和函数的区别是⽅法作⽤域属于类,所以即便和普通函数重名,也不会被覆盖;⽅法的第⼀个参数必须是self,但函数不要求;⽅法必须通过对象调⽤,⽽函数不需要。

注意,如果一个成员方法的返回值为self,那么这个方法后可以接类内的其他成员方法,例如,我们对PlayGame类进行一些修改,

class PlayGame:
    def __init__(self, gamename, gametype, gamescore):
        self.gamename = gamename
        self.gametype = gametype
        self.gamescore = gamescore

    def play(self):
        print("game start")
        return self  # 返回self

    def comment(self):
        print("good game")


dmc5 = PlayGame("Devil May Cry 5", "ACT", 10)
dmc5.play().comment()  # 成员方法的连续调用

执行结果如下,

game start
good game

如果我们想要让各个成员方法互相调用,需要用“self.成员方法()”的语法来实现,例如,我们对PlayGame类进行一些修改,

class PlayGame:
    def __init__(self, gamename, gametype, gamescore):
        self.gamename = gamename
        self.gametype = gametype
        self.gamescore = gamescore

    def play(self):
        print("game start")
        self.comment()  # 调用comment()方法

    def comment(self):
        print("good game")


dmc5 = PlayGame("Devil May Cry 5", "ACT", 10)
dmc5.play()

执行结果如下,

game start
good game
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值