对象,也就是数据类型,目前学习到对象可以作为参数进行传递,也可以作为属性进行传递实现不同的效果
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)
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的所有属性和方法,私有方法除外

浙公网安备 33010602011771号