Logo
Section 1 / 7

对象

让我们来学习 PowerShell 和 Python 中的对象与类。

导入

对象

让我们来学习 PowerShell 和 Python 中的对象与类。

对象内省

PowerShell 和 Python 都是面向对象的编程语言。这意味着几乎所有的内容都是通过一种称为 类(class) 的特殊编程结构来实现的。类用于创建具有属性和功能的对象,就像现实世界中的物体一样。在深入探讨之前,我们先花一点时间了解类、对象及其成员的基本概念。

类、对象、属性与方法

让我们从讨论类开始。

类

一般来说,类是一种类别、集合或事物的分类方式,这些事物具有某些共同特征,并能通过类型、种类或品质与其他类区分开来。例如,Human 是一个与 Plant 类不同的类。在编程语言中,特别是 Python 和 PowerShell 中,类是创建类实例的模板,这些实例被称为 对象。

在 Python 和 PowerShell 中创建或定义类的最简单方法是使用 class 关键字。例如,我们来用 Python 创建一个简单的 Human 类,包含一些属性和功能。首先,我们需要使用 class 关键字,后跟类名并以冒号(:)结尾。接下来的一行需要缩进,并提供类的主体,如下例所示:

1class Human: 2 # 这是一个属性/特性 3 name = 'homo sapiens' 4 height = 5 5 # 'def' 用于定义类的方法/函数 6 def eat(self): 7 print(self.name, '正在吃饭')

而 PowerShell 在语法上略有不同。类体用大括号 {} 包裹,且定义方法时不需要 def 关键字,直接写方法名和括号即可。总体来看,这两种脚本语言在定义基本类时有许多相似之处,如前面和下面的例子所示:

1class Human { 2 # 这是一个属性/特性 3 [String]$name = 'homo sapiens' 4 [Int] $height = 5 5 # 定义类的方法/函数 6 eat() { 7 Write-Host $this.name '正在吃饭' 8 } 9}

对象

对象是某个类别(类)的实例,具有某些属性(特性)并执行某些功能(方法)。为了简化理解,假设存在一个名为 Human 的类别。人类代表我们这一物种。如果我们取 Human 类的一个实例,比如叫它 John,那么 John 就是 Human 类的一个 对象。John 对象拥有 Human 类的所有属性和功能,因为所有对象都是基于相同的类模板创建的。

...
对象作为类的实例

属性或特性

属性(或特性)是对象特征的另一种说法,例如:

  • name
  • height
  • weight

函数或方法

函数是对象执行的动作,在编程语言中有时也称为方法。

  • eat()
  • sleep()
  • talk()

注意: 函数和方法经常被混用,这是不正确的。所有方法都是函数,但并非所有函数都是方法。

方法是定义在类体内部的函数。要访问方法,必须使用对象上的点操作符(.)。而函数可以独立存在,不一定属于某个类。

我们将在后续课程中进一步学习函数和方法。

实例化类

在 Python 中,可以通过 <类名>() 的语法创建对象或类的实例,并将其赋值给变量以供后续使用。建议类名首字母大写。

1# 类的实例,也称为对象 2john = Human()

在 PowerShell 中,对象通过 New-Object cmdlet 创建,后接类名。

1$prateek = New-Object Human 2 3# 或者等价写法 4$john = [Human]::new()

访问对象的属性和函数

为了访问对象的属性和函数,PowerShell 和 Python 都使用点(.)操作符。换句话说,在 PowerShell 中访问对象 John 的 height 属性或 eat() 方法,可以这样写:

1$john.height 2$john.eat()
1class Human { 2 # 这是一个属性/特性 3 [String]$name = 'homo sapiens' 4 [Int] $height = 5 5 # 定义类的方法/函数 6 eat() { 7 Write-Host $this.name '正在吃饭' 8 } 9} 10$prateek = New-Object Human 11$prateek.name = "Prateek" 12Write-Host $prateek.name 13$prateek.height = 6 14Write-Host $prateek.height 15$prateek.eat()

Python 中也有类似的用法。我们可以实例化一个类,然后使用点操作符访问和修改属性,甚至调用类的方法。

1class Human: 2 # 这是一个属性/特性 3 name = 'homo sapiens' 4 height = 5 5 # 'def' 用于定义类的方法/函数 6 def eat(self): 7 print(self.name, '正在吃饭') 8 9John = Human() # 实例化对象 10John.name = "John" # 使用 '.' 操作符访问 name 11print(John.name) # 打印 name 12John.height = 6 # 使用 '.' 操作符访问 height 13print(John.height) # 打印 height 14John.eat() # 调用 eat 方法

到目前为止,我们已经学习了类、对象以及如何访问对象的成员。现在,让我们来看看如何在 PowerShell 和 Python 中检查对象,这被称为 对象内省。其目的是了解对象的成员(方法和属性)有哪些。

基础

方法