从空间角度研究类

class Human:
    mind = "聪明"

    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def eat(self, argv):
        self.hobby = "桌球"
        Human.body = argv
        print("吃饭")


xie = Human("xie yulin", 22)

一、何处可以添加对象属性
1、在类的__init__方法可以添加对象属性

2、在类的方法中可以添加对象属性

xie.eat()
print(xie.__dict__)

3、在类的外部中可以添加对象属性

xie.weight = 100
print(xie.__dict__)

二、何处添加类的属性?
1、类的内部

xie.eat("手")
print(Human.__dict__)

2、类的外部

Human.body = "脚"
print(Human.__dict__)

三、类与对象的关系
1、对象空间与类空间有相同的名字,对象. 肯定先从对象空间查找(对象空间有类对象指针)

xie.mind = "机智"
print(xie.mind)
print(Human.mind)

2、对象只能使用类属性,不能修改删除

del xie.mind  # 报错

查询顺序:
对象.名字: 对象空间 ---> 通过对象空间的类对象指针 ---> 类空间 ---> 父类空间
类名.名字: 类空间 ---> 父类空间

posted @ 2020-11-13 15:32  Ylinn  阅读(75)  评论(0)    收藏  举报