继续上篇 形象生动的解释什么是Python的类与对象 今天在给大家分享一下什么是"对象的属性"
01 对象的属性
帅哥这一类人除了共有的行为之外,还有其他一些共有属性,例如身高、体重等,一般帅哥身高都在180cm以上,体重是70kg左右
如果要把帅哥这一类人所共有的属性也加入到刚刚新建的Shuaige这个类中,那么Python代码又如何表达呢?具体代码如下
# coding=utf-8# authou:shichao
class shuaige: def __init__(self, a, b): self.height = a self.weighe = b
def changge(self): print("我会跳舞")
def tiaowu(self): print("我会跳舞")
zhangsan = shuaige(180,70)
1.代码分析
a. 第02行代码,def关键字用来定义一个方法,这里定义了一个__init__方法,注意init前后都有两个下划线,一共是4个下划线,__init__的方法是一个特殊的方法
这个方法的作用是给zhangsan这个帅哥(实例)的属性赋予初始值,也就是说帅哥共有属性被封装在__init__的方法里了。
b. 第02行代码,__init__方法的括号里有3个参数,分别是self、a、b,而self这个参数代表的是zhangsan这个帅哥。
对初学者来说,可以这样理解,在类的外面,用zhangsan来代表刚“出炉”的帅哥,在类的内部,就用self代表这个帅哥,也就是说zhangsan和self指向的是同一个人(实例),只是取了两个不同的名字。
c. 第03行代码和第04行代码,既然zhangsan和self指向的是同一个人,那么self.height=a等同于zhangsan.height=a,那么a具体等于多少就要从类的外部的zhangsan这个帅哥传递进来。
self.weight=b也是同样的道理。
d. 第09行代码,前面说过Shuaige()会“出炉”一个帅哥,而Shuaige(180,70)里带有两个实际的数字,那么这两个实际的参数就会传递给__init__(self,a,b)方法中的参数a和参数b,
同时在创建zhangsan这个帅哥对象时,除了会传递180和70这两个参数给a和b外,Python还会把zhangsan这个帅哥自己也传递给__init__方法中的参数self,这也是为什么说self代表的也是zhangsan这个帅哥实例。
e. zhangsan这个帅哥(实例)通过__init__的方法把自己拥有的属性封装在了一个叫Shuaige类的内部,那么在类的外部,zhangsan这个帅哥就可以在需要的时候去调用它。
f. self作为一个标识,不管是类中的属性,还是类中的方法,只要它后面跟了self这个参数,就说明这个属性和方法是属于帅哥实例的,因为它们指向了同一个人。
02. 对象调用自己的属性
zhangsan这个帅哥实例已把自己的属性封装在Shuaige这个类里面了,现在zhangsan这个帅哥实例需要用到这两个属性,那如何调用呢?具体代码如下
# coding=utf-8# authou:shichao
class shuaige: def __init__(self, a, b): self.height = a self.weighe = b
def changge(self): print("我会跳舞")
def tiaowu(self): print("我会跳舞")
zhangsan = shuaige(180,70)print(zhangsan.height)print(zhangsan.weighe)
1. 代码分析
a. 第10行和第11行代码,帅哥这个实例调用类中已封装好的属性很简单:对象名加“。”再加属性名即可。
那么zhangsan.height意思是zhangsan这个帅哥实例要调用自己的“身高”属性,如果要打印出属性的属性值则需要加上print(),zhangsan.weight的操作也如此。
2. 注意事项
a. 既然self代表的是zhangsan这个实例,那么在类的外部,可不可以使用self去调用自己的属性,即以上代码最后一行换成print(self.weight),
这是不行的,虽然self也指向了zhangsan这个帅哥(实例),但它只能在类的内部使用。
b. init____()方法里面有3个参数,这3个参数要用逗号隔开,同时新建实例时,zhangsan = Shuaige(180,70)类名里面的2个实参同样要用逗号隔开
PS: 部分释义来源于网络检索整理,如有侵权请联系删除
加小编微信加测试开发群
查看更多精彩文章,请订阅以下公众号
推荐阅读