对象,也就是数据类型,目前学习到对象可以作为参数进行传递,也可以作为属性进行传递实现不同的效果
1 对象作为参数传递给方法时候
A类的A对象的a方法,接收到B类B对象的b方法后,实现对a方法的扩展
a方法不仅可以访问A对象的属性和方法,也能访问B对象的B属性和方法

1,一个对象A可以作为,对象B的a方法参数,接收,实现在B对象的a方法参数内调用A对象的属性和方法,调用后仅限于B对象的a方法参数内访问

 1 #  Learner BM
 2 """
 3 对象,也就是数据类型,目前学习到对象可以作为参数进行传递,也可以作为属性进行传递实现不同的效果
 4 #   对象作为参数传递给方法时候
 5 A类的A对象的a方法,接收到B类B对象的b方法后,实现对a方法的扩展
 6 a方法不仅可以访问A对象的属性和方法,也能访问B对象的B属性和方法
 7 
 8 """
 9 #演练,作为参数进行传递
10 class A:
11     def __init__(self,name):
12         self.name=name
13     def afunc(self,item):#  参数为对象b,item=b  item具有b的属性好方法,能在函数内使用
14         #  输出b对象的属性
15         print('我是A对象但是现在使用的是b的属性%s' %item.name)
16         #  调用b对象的方法
17         item.bfunc()
18         #  仅限于b方法内使用
19 class B:
20     def __init__(self,name):
21         self.name=name
22     def bfunc(self):
23         print('我是b方法')
24         #print('我是B的方法我现在使用的是%s的属性' % item.name)
25         #print('我是B的方法我现在使用的是%s的方法' % item.afunc('x'))
26         pass
27 # 创建实例
28 a = A('a对象')
29 b = B('b对象')
30 # 调用方法,将b对象传入a的方法,使A对象的a方法内部能够访问B对象的b方法和属性
31 a.afunc(b)
32 # b.bfunc(a)
View Code

2,对象作为属性传递给另外一个实例的属性时

  例如Gun类的gun对象ak47,作为属性,赋值给Solider的属性gun的时候,使得solider类可以党文到gun类实例的所有方法和属性

    赋值方式,可以在定义solider类的gun属性的时候直接赋值 self.gun =ak47  (ak47必须先从gun类创建出实例)

   或者也可以在类体外进行赋值,方式为先创新gun的对象,ak47 ,然后 创建solider'类的实例 xusanduo

  赋值  xusanduo.gun = ak47 赋值完毕,后xusanduo类可以通过ak47这个中间对象,访问到ak47的所有属性和方法,私有方法除外

posted on 2020-03-08 21:24  RRRRRRR1  阅读(22)  评论(0)    收藏  举报