第1月4周5天

  1. 组合
  2. 购物车作业

操作属性:

  1. 查看类中全部的属性及方法 dict
  2. 对某个属性进行删改查,以及增加某个属性,万能的点。
    del 类名.name

对象查看对象的所有属性

  1. dict
  2. 对象操作对象中的属性
  3. 对象查看类中的属性
  4. 对象执行类中的方法
    obj.func()
    类名.func(obj)

  5. 开辟对象空间并且创建了一个对象指针
  6. 通过类对象指针 找到了__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
----------------------

点调用会增加对象属性。

类空间没有指向对象空间指针

不能

  1. 对象与对象之间能不能互相调用?
    没有指针所以不能互相调用
    同一个类实例化出来的对象之间是不能互相访问的
    不同类实例化的对象有可能互相访问。

给对象封装属性:任意位置都可以增加,类的外边,在任意类的方法里,在init里都可以。

组合

给一个类的对象封装一个属性,这个属性是另一个类的对象

封装武器

攻击的执行者是人

def equip_weapon(self,w):
    self.equip_weapony

组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系。
产生关系还有继承

猜你喜欢

转载自www.cnblogs.com/yonghuierming/p/9551476.html