python面向对象中成员属性、实例属性、类属性

成员属性:

成员属性在这里值得是在自己定义的类中的属性,一经实例化就会成为实例特有的属性

例如:

class Person:         
        def __init__(self,name,age,gender,address):        
                self.name=name           
                self.age=age        
                self.gender=gender        
                self.address=address 

tom=Person('tom',23,'男','美国')
jerry=Person('jerry',22,'男','美国')
print(tom.name)print(jerry.name) 


#输出结果
tom
jerry

从上述代码中我们可以看到,我们通过定义了一个Person的类,实例化了两个对象tom和jerry。我们通过这两个对象去使用name的时候发现,他们输出的结果不同.这里的name就是成员变量/属性了。因为在我们实例化对象的时候,通过传参,我们把类中的self.name设置成了当前类的私有属性。

这时的name就成了对应对象的成员属性/变量了

实例属性/变量

还是上述的代码,这时我们在类外面通过对象引用一个类中没有声明的变量会有结果呢?

class Person:         
        def __init__(self,name,age,gender,address):        
                self.name=name           
                self.age=age        
                self.gender=gender        
                self.address=address 

tom=Person('tom',23,'男','美国')
jerry=Person('jerry',22,'男','美国')
tom.nickname='汤姆'
print(tom.nickname) 

 #输出结果
汤姆

从上述代码中我们看到,当对象调用一个类中没有声明的变量的时候,并给变量赋值,结果是可以正常输出,那么这时jerry中能不能直接使用nickname呢?我们来试试

class Person:         
        def __init__(self,name,age,gender,address):        
                self.name=name           
                self.age=age        
                self.gender=gender        
                self.address=address 

tom=Person('tom',23,'男','美国')
jerry=Person('jerry',22,'男','美国')
tom.nickname='汤姆'
print(tom.nickname)print(jerry.nickname)

  #输出结果
汤姆
Traceback (most recent call last):  File "C:/Python36/ttt.py", line 13, in <module> 
  print(jerry.nickname)AttributeError: 'Person' object has no attribute 'nickname'

我们看到,当我们直接使用nickname的时候,程序出错,告诉我们类Person中没有nickname这个属性。


这时,在tom中就有了nickname这个属性,而jerry中则没有nickname。从中我们可以得知,这时的nickname是tom这个对象所特有的属性/变量,并且这个属性独立于类型之外。这时的nickname就是对象/实例的实例属性/变量。在现实情况下,对象中可以存在从类中实例化的属性,也可以自己声明自己特有的属性。

类属性

类属性是定义声明在类中的一种属性,不同于成员属性。类属性是所有实例化对象共同的属性,并且可以直接使用类调用使用

例如:

class Person:         
        def __init__(self,name,age,gender,address):        
                self.name=name           
                self.age=age        
                self.gender=gender        
                self.address=address 


tom=Person('tom',23,'男','美国')
jerry=Person('jerry',22,'男','美国')
print(tom.num,jerry.num,Person.num) 

tom.num=30
print(tom.num,jerry.num,Person.num)
Person.num=40
print(tom.num,jerry.num,Person.num)


#输出结果
20 20 20
30 20 20
30 40 40

在上面,我们在类Person中,声明了一个没有带self 的变量num。在实例化的两个对象tom,jerry中都能使用,甚至我们还可以直接使用类去调用这个变量/属性,这时的num就是类Person的类属性/变量。

并且,我们还过修改num的值可以看出,当使用对象去改变num的值时,此时的num变成了tom对象中的实例变量/属性了,而通过类调用改变num的值,此时的num的值才发生改变。

总结

通过前面的代码演示,我们可以得出

成员属性是在类声明定义好的属性,通过self进行封装在类中,经过实例化对象后,成为对象特有的属性。

实例属性是没有经过类的声明定义,直接在对象中去声明,引用的变量,是当前对象不同与其他对象(通过相同类实例化的对象)的属性。它独立于类之外,只属于当前对象。

类属性是在类中声明定义的变量,但是不同于成员属性,类属性没有经过self封装而直接定义的。所以类属性只属于当前类,实例化的对象只能调用而不能修改。类属性只能通过类本身修改

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,816评论 2 16
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,218评论 4 16
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,805评论 1 10
  • 东风送暖盈面 春雨煮新茶 紫燕斜穿折柳相送 谁是那舟中别去背影 夏雷隐隐天边 荷叶裁罗衣 虹桥绿波蛙鸣阵阵 流光飞...
    眉间飞雪阅读 464评论 19 18
  • 涡轮风扇发动机体现了一个国家机械工业的最高水平,被誉为是机械工业“皇冠上的明珠”,其技术难度高、研发周期长、资金投...
    好心态阅读 1,311评论 2 4