首页 > 其他 > 详细

对象属性与类属性

时间:2019-07-31 20:54:48      阅读:122      评论:0      收藏:0      [点我收藏+]
 1 # 1、直接写在class中的属性叫类属性(可以通过类名直接调用)。
 2 # 调用类属性:类名.类属性名  或 对象.属性名
 3 
 4 class Person():
 5     # 写在class中的属性叫类属性
 6     name = "lily"
 7     def __init__(self, name, age):
 8         # 写在init中,使用self.的属性称之为对象属性
 9         # self.name = "lily‘s mother"
10         self.age = age
11 
12 # 1、调用类属性:类名.类属性名  或 对象.属性名
13 print(Person.name)
14 
15 per1 = Person("lucy", 12)
16 print(per1.name)
17 # per1.name = "llllllll"
18 # print(per1.name)
19 
20 per2 = Person("lilei", 23)
21 # 2、调用对象属性:对象.属性名
22 print(per2.age)
23 # print(Person.age) # 错误
24 
25 # 3、对象属性的优先级高于类属性
26 # 当使用对象调用属性时,如果存在对象属性,那么使用对象属性的值,
27 # 如果没有对象属性,那么会去使用同名的类属性的值,如果没有同名类属性,
28 # 返回一个错误。
29 per3 = Person(a, 12)
30 print(per3.name)   #
31 
32 # 4、删除对象属性   del 对象名.属性名
33 # 当删除的对象时,该对象属性不能再使用,如果后期还是使用对象调用该属性时,
34 # 会去查找有没有同名的类属性,有则使用的是类属性,没有则返回错误
35 print(--------------------------------)
36 per4 = Person("abc", 34)
37 print(per4.name)  # mother
38 
39 # del per4.name
40 # print(per4.name)   # lily
41 
42 # del per4.name   # 对象属性被删除后,在该对象中已经不存在,不能再使用。
43                   # 不会影响其他对象。
44 # print(per4.name)
45 
46 # print(per4.age)  # 34
47 # del per4.age
48 # print(per4.age)
49 
50 # 5、动态添加属性: 注:在取值之前一定要赋值
51 # 语法格式: 对象名.新的属性名 = 初始值
52 # 注:只对当前对象有效,对其他对象无效。
53 
54 # per5 : age 对象属性  name 类属性
55 per5 = Person("aa", 88)
56 print(per5.age)
57 per5.weight = 54.3
58 print(per5.weight)
59 print(per5.name)
60 per5.name = "qwe"
61 print(per5.name)
62 
63 # 注:以后尽量不要将类属性与对象属性重名,原因:因为对象属性的优先级
64 # 高于类属性,对象属性会覆盖类属性,只有当对象属性不存在时,才能获取到
65 # 类属性。

 

对象属性与类属性

原文:https://www.cnblogs.com/BKY88888888/p/11278808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!