Python-类空间和类关系

类空间

  • 给类空间和对象空间添加属性

  • 类外部,内部,方法中

添加对象属性:

class A:
   def __init__(self,name):
       # 类里边给对象添加属性
       self.name = name

   def func(self,sex):
       self.sex = sex
# 类外面可以:
obj = A('meet')
obj.age = 18
print(obj.__dict__)  # {'name': 'meet', 'age': 18}

# 类内部也可以:
obj = A('meet')  # __init__方法可以。
obj.func('男')  # func 方法也可以。
print(obj.__dict__)
总结:给对象空间添加属性可以在类的内部,类的外部,类中的方法

添加类的静态属性

class A:
   def __init__(self,name):
       # 类内部给类空间添加属性
       self.name = name
   def func(self,sex):
       # 类中的方法给类空间添加属性
       self.sex = sex
   def func1(self):
       A.bbb = "ccc"
# 类的外部可以添加
A.aaa = "baoyuan"
print(A.__dict__)
print(A.aaa)
# 类的内部也可以添加
A.func1(1)
print(A.__dict__)
总结:给类空间添加属性可以在类的内部,类的外部,类中的方法

对象如何找到类的属性?

  • 实例化一个对象,可以通过点的方式找到类中的属性

  • 对象之所以可以找到类,是因为对象空间中有类对象指针这么这个东西

对象查找属性的顺序:

  • 先从对象空间找 =》类空间找 =》父类空间找

类名查找顺序:

  • 先从本类空间找 =》父类空间找

    扫描二维码关注公众号,回复: 9595168 查看本文章

查找这些顺序都是单向不可逆的,类名不可能找到对象的属性

类关系

依赖:将一个类的对象当做参数传递给另一个类的方法中

组合:将一个类的对象封装到另一个类实例化的对象空间中

self.g.f.aet() 一定是组合(组合是咱们最常用的关系)

依赖关系和组合关系:会用就行

类似函数的嵌套

 

 

class People:
   def __init__(self,name):
       self.name = name
   def open(self,a): # a = obj2
      a.open_door(self)
def close(self,c): # c = obj2
      c.close(self)
class Refrigentor:
   def __init__(self):
       self.name = name
   def open_door(self,b): # b = self = obj1
      print(f"{b.name}打开了{self.name}的门")
   def close_door(self,d): # d = self = obj1
      print(f"{d.name}关闭了{self.name}的门")
obj1 = People("老大")
obj2 = Refrigentor("奥克斯")
obj1.open(obj2)
obj1.close(obj2)
       

 

 

class Boy:
   def __init__(self,name,beauty): # beauty = g
       self.name = name
       self.beauty = beauty
   def eat(self):
       print(f"{self.name}和{self.beauty.name}一起吃了烛光晚餐") # self.beauty = g
   def bodybuliding(self):
       self.beauty.live(f"{self.name}和{self.beauty.age}岁体重为{self.beauty.weight}斤的{self.beauty.name}一起散步")
class Girl:
   def __init__(self,name,age,weight):
       self.name = name
       self.age = age
       self.weight = weight
   def live(self,argv):
       print(f"直播内容为:{argv}")
g = Girl("刘亦菲",20,90)
p = Boy("老大",g)
p.eat()
p.bodybuliding()
       

猜你喜欢

转载自www.cnblogs.com/womenzt/p/12419138.html