属性将值与特定的类,结构或枚举关联。存储的属性存储常量和变量值作为实例的一部分,而计算属性计算(而不是存储)值。计算属性由类,结构和枚举提供。存储的属性仅由类和结构提供
1.存储属性
在最简单的形式中,存储属性是一个常量或变量,作为特定类或结构的实例的一部分存储。存储的属性可以是变量存储的属性(由var关键字引入)或常量存储的属性(由let关键字引入)
一个可变属性,一个不可变属性FixedLengthRange具有被调用的变量存储属性的实例和被称为firstValue的常量存储属性length。在上面的例子中,length的范围被创建时被初始化,之后不能被改变,因为它是一个常量属性
2.常量结构实例的存储属性
如果您创建了一个结构的实例并将该实例分配给一个常量,那么即使它们被声明为变量属性,也不能修改该实例的属性
值类型且为let,不能改变属性因为rangeOfFourItems被声明为一个常量(使用let关键字),所以不可能改变它的firstValue属性,即使它firstValue是一个变量属性。
结构体是值类型。当一个值类型的实例被标记为一个常量时,它的所有属性也是如此。
对于引用类型的类。如果将引用类型的实例分配给常量,则仍然可以更改该实例的变量属性
3.懒加载
关键字:lazy ,前面加lazy,初始化不会被创建,而是等到被用到
必须将延迟存储属性声名为变量(var),因为属性的初始值可能在实例构造完之后才会创建。但是常量属性在构造过程中必须要有初始值,所以没有办法声名成延迟属性。
懒--存储属性center就是计算属性 结果4.计算属性
5.只读计算属性
具有getter但没有setter的计算属性被称为只读计算属性。只读计算属性总是返回一个值,可以通过点语法访问,但不能设置为不同的值
注意:您必须将计算属性(包括只读计算属性)声明为具有var关键字的变量属性,因为它们的值不是固定的。该let关键字仅用于恒定的特性,以表明一旦它们被设置为实例的初始化的一部分,不能改变它们的值
只读属性6.属性观察者
属性观察员观察并回应物业价值的变化。每次属性值设置时都会调用属性观察器,即使新值与属性的当前值相同。
willset跟didsetnewTotalSteps与oldValue是默认值
7.类
属性
实例属性是属于特定类型实例的属性。每次创建该类型的新实例时,它都有自己的一组属性值,与其他任何实例都是分开的。
您也可以定义属于类型本身的属性,而不是该类型的任何一个实例。只会有这些属性的副本,不管你创建了多少个这种类型的实例。这些属性称为类型属性
类型属性static 访问,修改例子2:
应用 调用以上是教程中的例子,演示类属性与实例属性的配合使用
总结:类本身也是一个对象,定义了该类型的一些基本"特征",本质也是一个对象,所以它也可以有自己的属性,只是它不用创建,不需实例调用,这个特性Python也有
网友评论