-
给类空间和对象空间添加属性
-
类外部,内部,方法中
添加对象属性:
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()