- 组合
- 购物车作业
操作属性:
- 查看类中全部的属性及方法 dict
- 对某个属性进行删改查,以及增加某个属性,万能的点。
del 类名.name
对象查看对象的所有属性
-
dict
-
对象操作对象中的属性
-
对象查看类中的属性
-
对象执行类中的方法
obj.func()
类名.func(obj) -
开辟对象空间并且创建了一个对象指针
-
通过类对象指针 找到了__init__方法执行,给对象封装属性
对象找属性,方法,对象空间>类空间>父类空间>object>元类>元类父类>type
gailun.attack= '攻击力' 在对象空间里创建一个对象属性
gailun.attack() 在对象空间中找到了一个的同名的属性,但是是不可执行的。报错。
gailun.attack() 开辟一个临时名称空间执行attack 执行attack。函数结束,这个
class Person:
def __init__(self):
pass
def eat(self):
pass
p = Person()
print(p)
print(Person.eat)
print(p.eat)
----------------------
"输出"
<__main__.Person object at 0x103ac1940>
<function Person.eat at 0x103ac5840>
<bound method Person.eat of <__main__.Person object at
0x103ac1940>>
----------------------
class Person:
def __init__(self):
pass
def eat(self):
pass
def __repr__(self):
return "wow"
p = Person()
print(p)
print(Person.eat)
print(p.eat)
----------------------
"输出"
wow
<function Person.eat at 0x104dc5840>
<bound method Person.eat of wow>
----------------------
class Person:
def __init__(self):
pass
def eat(self):
pass
p = Person()
print(p)# 对象地址
print(hex(id(p)))# 16进制转化id()值得到的对象地址
print(hex(id(p.eat)))
print(hex(id(Person.eat)))
----------------------
"输出"
<__main__.Person object at 0x1039339b0>
0x1039339b0
0x101ba29c8
0x1039c5840
----------------------
点调用会增加对象属性。
类空间没有指向对象空间指针
不能
- 对象与对象之间能不能互相调用?
没有指针所以不能互相调用
同一个类实例化出来的对象之间是不能互相访问的
不同类实例化的对象有可能互相访问。
给对象封装属性:任意位置都可以增加,类的外边,在任意类的方法里,在init里都可以。
组合
给一个类的对象封装一个属性,这个属性是另一个类的对象
封装武器
攻击的执行者是人
def equip_weapon(self,w):
self.equip_weapony
组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系。
产生关系还有继承