创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

而类有两种属性:静态属性和动态属性

  • 静态属性就是直接在类中定义的变量(字段)
  • 动态属性就是定义在类中的方法

其中类的数据属性是共享给所有对象的

>>>id(egg.role)
4341594072
>>>id(Person.role)
4341594072

而类的动态属性是绑定到所有对象的

>>>egg.attack
<bound method Person.attack of <__main__.Person object at 0x101285860>>
>>>Person.attack
<f
unction Person.attack at 0x10127abf8>

 

创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常

 1 # job1 = 'teacher'
 2 # class A:
 3 #     home = '老男孩教育'
 4 #     name = '武大'
 5 #     def __init__(self, name, age):
 6 #         self.name = name
 7 #         self.age = age
 8 #     def job(self):
 9 #         print('我在开车.....')
10 
11 # 查询顺序
12 # 对象的查询顺序:先从对象空间去找,对象的空间没有此变量或者方法,通过对象中的类对象指针去类中寻找.
13 # obj1 = A('oldboy',1000)
14 # obj1 = A('oldboy',1000)
15 # obj1 = A('oldboy',1000)
16 # obj1 = A('oldboy',1000)
17 # print(obj1.name)
18 # print(obj1.job)
19 # print(obj1.home)
20 # 类的查询顺序: 直接从类本身找.
21 # print(A.name)
查询顺序

相关文章:

  • 2021-12-10
  • 2019-11-30
  • 2019-07-10
  • 2021-10-15
  • 2022-12-23
  • 2021-08-06
  • 2021-11-30
  • 2022-12-23
猜你喜欢
  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2021-06-12
  • 2022-12-23
  • 2019-06-28
  • 2021-12-19
相关资源
相似解决方案