Python之属性和方法的理解

2020-09-13  本文已影响0人  5cb608806559

我们有同学问:为什么在Python进行调用时,有时候要加括号而有时不需要加括号呢?简单粗暴地说,没加括号的就是调用的属性,而加了括号是调用的方法。

为了帮助大家理解属性与方法,我们只在这里简单聊一聊面向过程与面向对象的编程思想。(如果希望了解更多可以查看三大主流编程思想介绍)

面向过程的编程思想

面向过程(简称PO)是一种以过程为中心的编程思想。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

举了栗子:下雨的时候,人们为了防止被雨淋湿打开了雨伞。
采用面向过程的思想解析:
步骤是:下雨了,打开伞,挡雨,都是动词
编码实现:fall(),open(),prevent(),这 3 个函数一一对应上行的步骤。

面向对象的编程思想

面向对象(简称OO)是一种以事物为中心的编程思想。
面向对象是把构成问题事务分解成各个对象万物皆对象,世界上任何一个事物都可以看成是一个对象。一般的,我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为

还是刚才的栗子:下雨的时候,人们为了防止被雨淋湿打开了雨伞。
采用面向对象的思想解析:

在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)。我们可以这样理解:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class)。比如人类,动物,植物等等,这些都是类的概念。

属性

在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用。公有属性可以是任意变量,私有属性是以双下划线开头的变量。

下面我们定义一个People类,它有一个公有属性name,和一个私有属性__age。

class People():
  def __init(self):
    self.name = 'Alice'
    self.__age = 24

我们创建一个People类的实例p,当我们调用它的私有属性__age时发现有如下错误。

p=People()
print(p.__age)

错误提示信息:
AttributeError: 'People' object has no attribute '__age'

这就说明了私有属性不可以在类的外部使用。那么我们要想调用私有属性的值,就可以在类的内部通过定义一个方法来调用。

方法

在People类的内部定义一个showage方法来调用私有属性__age的值。

class People():
  def __init__(self):
    self.name = 'Alice'
    self.__age = 24

  def showage(self):
    print(self.__age)

调用showage()方法实现私有属性__age的输出。

p=People()
p.showage()

输出结果:
24

使用第三方库时,哪些是私有的属性,哪些是公有的属性是在作者创建的时候就已经定义好的。所以我们在进行调用时,需要按照他们提供的官方文档的说明来使用。就好比厂家已经生产好了产品,如果我们想使用它,就必须需要按照他们提供的说明书进行操作是一样的道理。

上一篇 下一篇

猜你喜欢

热点阅读