在现实世界中,你可能已经了解对象就是那些能够摸到的东西。Powershell中的对象和现实生活很相似。例如要在现实生活中描述一把小刀。我们可能会分两方面描述它
属性:一把小刀拥有一些特殊的属性,比如它的颜色、制造商、大小、刀片数。这个对象是红色的,重55克,有3个刀片,ABC公司生产的。因此属性描述了一个对象是什么。
方法:可以使用这个对象做什么,比如切东西、当螺丝钉用、开啤酒盖。一个对象能干什么就属于这个对象的方法。
创建对象
通过New-Object可以创建一个对象,甚至可以创建一个虚拟的小刀,但是第一步需要创建一个空对象。空对象什么都没有,如果调用它,不会返回任何东西。
PS C:Powershell> $pocketknife=New-Object object PS C:Powershell> $pocketknife System.Object
接下来描述这个对象是什么
PS C:Powershell> Add-Member -InputObject $pocketknife -Name Color -Value "Red" -MemberType NoteProperty PS C:Powershell> $pocketknifeColor ----- Red
PS C:Powershell> Add-Member -InputObject $pocketknife -Name Weight -Value "55" -MemberType NoteProperty PS C:Powershell> $pocketknife | Add-Member NoteProperty Blades 3 PS C:Powershell> $pocketknife | Add-Member NoteProperty Manufacturer ABC PS C:Powershell> $pocketknife
Color Weight Blades Manufacturer ----- ------ ------ ------------ Red 55 3 ABC
给一个对象增加了属性后,这个对象就有形状了,但是它仍然不能做任何事,要想它做事,必须给它增加方法。同样使用Add-Member,不过-memberType 选项使用ScriptMethod。
# 增加一个新方法: Add-Member -memberType ScriptMethod -In $pocketknife ` -name cut -Value { "I'm whittling now" } # 指定参数类型增加一个新方法: Add-Member -in $pocketknife ScriptMethod screw { "Phew...it's in!" } #直接通过管道增加一个新方法: $pocketknife | Add-Member ScriptMethod corkscrew { "Pop! Cheers!" }
PS C:Powershell> $pocketknife.cut() I'm whittling now PS C:Powershell> $pocketknife.screw() Phew...it's in! PS C:Powershell> $pocketknife.corkscrew() Pop! Cheers!
在调用方法时如果没有使用圆括号,方法不会执行,但是可以返回方法的基本信息。
PS C:Powershell> $pocketknife.corkscrewScript : "Pop! Cheers!" OverloadDefinitions : {System.Object corkscrew();} MemberType : ScriptMethod TypeNameOfValue : System.Object Value : System.Object corkscrew(); Name : corkscrew IsInstance : True
到目前为止一个虚拟的小刀对象就创建完成了,一个对象包含数据(属性)和动作(方法)。
问题内容: 假设我有一个带有某些属性的类。如何最好地(在Pythonic- OOP中)访问这些属性?就像吗?还是写get访问器?这些东西可接受的命名方式是什么? 编辑: 您能否详细说明使用单引号或双引号下划线命名属性的最佳做法?我在大多数模块中看到使用单个下划线。 如果已经问过这个问题(虽然搜索没有带来结果,但我有一个直觉,请指出)-我将结束这个问题。 问题答案: 通常公认的做事方式只是使用简单的
栈方法 JavaScript数组也提供了一种 让 数组的行为 像其它数据结构的方法,数组也可以像栈一样,栈是一种 限制插入和删除的数据结构, 栈是一种后进先出的数据结构,最新添加的内容最早移除。 栈中的操作分别是插入和移除,只发生在栈的顶部,push()方法(插入)和pop()方法(移除)。 push()方法可以接收任意多的参数,从末尾插入数据,把它们逐个添加个数组的末尾,并返回修改后数组的 长度
这是我的密码: 这条线给了我错误 "属性错误:'浮点'对象没有属性'exp'"。X,t是Numpy ndarray。
Image 对象有一些常用的基本属性,这些属性能够帮助我们了解图片的基本信息,下面对这些属性做简单的讲解: 1) size:查看图像的尺寸 输出结果: 2) format:查看图片的格式 输出结果: 3) readonly:图片是否为只读 该属性的返回为 0 或者 1,分别对应着是和否,输出结果如下: 4) info:查看图片相关信息 该属性的返回值为字典格式,输出结果如下: 5) mode:图像
所有对象属性都有默认值。然而,改变一些属性设置以定制图形可能有用。有两个途径可以设定对象属性: 创建对象时指定属性值。 在现有的对象中设置属性值 从作图命令设定属性 类似作图函数,在诸如plot, mesh, 和surf的创建对象用的函数也可以指定对象属性值为变元。 例如,可以用创建线或表面的作图命令来指定属性名称和属性值为二元变元。命令 plot(x,y,'LineWidth',1.5) 以x
问题内容: 这个问题很简单,但是由于我是python的新手,所以我从php过来了,因此遇到了一些错误。 我有以下简单的课程: 在PHP中,我可以执行以下操作: 我该如何在python中做到这一点? 问题答案: 要访问对象的字段或方法,请使用dot : 如果将在运行时定义字段名称,请使用内置函数: