首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一文带你了解什么是 " 对象的属性 "

一文带你了解什么是 " 对象的属性 "

作者头像
测试小兵
发布2023-03-09 15:58:08
发布2023-03-09 15:58:08
5600
举报
文章被收录于专栏:猪圈子猪圈子

继续上篇 形象生动的解释什么是Python的类与对象 今天在给大家分享一下什么是"对象的属性"

01 对象的属性

帅哥这一类人除了共有的行为之外,还有其他一些共有属性,例如身高、体重等,一般帅哥身高都在180cm以上,体重是70kg左右

如果要把帅哥这一类人所共有的属性也加入到刚刚新建的Shuaige这个类中,那么Python代码又如何表达呢?具体代码如下

代码语言:javascript
复制


# 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这个帅哥实例需要用到这两个属性,那如何调用呢?具体代码如下

代码语言:javascript
复制
# 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: 部分释义来源于网络检索整理,如有侵权请联系删除

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档