情景1:小明请保洁打扫卫生
方法一:在实例方法中调用其他类
【一次性】
含义:小明出生了,请保洁员打扫卫生,每次打扫都换一个新的保洁员
class Person:
def __init__(self,name = ""):
self.name = name
def invite(self):
print(self.name,"请")
clean_staff = CleaningStaff()
clean_staff.sweep()
class CleaningStaff:
def sweep(self):
print("保洁员打扫卫生")
xiaoming = Person("小明")
xiaoming.invite()
# 输出结果:
# 小明 请
# 保洁员打扫卫生
方法二:在构造函数中调用其他类
【永久】
含义:小明出生了,并拥有一个为他服务一辈子的保洁员,每次都请这个保洁员打扫卫生
class Person:
def __init__(self,name = ""):
self.name = name
self.cleaner = CleaningStaff()
def invite(self):
print(self.name,"请")
self.cleaner.sweep()
class CleaningStaff:
def sweep(self):
print("保洁员打扫卫生")
xiaoming = Person("小明")
xiaoming.invite()
# 输出结果:
# 小明 请
# 保洁员打扫卫生
方法三:实例方法参数调用其他类
【随意】
含义:小明出生了,请保洁员打扫卫生,由他自己决定是一直请一个保洁员,还是每次换一个,还是机器人……
class Person:
def __init__(self,name = ""):
self.name = name
def invite(self,cleaner): # 传什么,就请什么打扫卫生
print(self.name,"请")
cleaner.sweep()
class CleaningStaff:
def sweep(self):
print("保洁员打扫卫生")
xiaoming = Person("小明")
cleaner = CleaningStaff()
xiaoming.invite(cleaner)
# 输出结果:
# 小明 请
# 保洁员打扫卫生
情景2:玩家攻击敌人,敌人受伤(头顶爆字)
方法三:实例方法参数调用其他类
应该是来什么敌人,打什么敌人。故我选择方法三
class Player:
def __init__(self,role):
self.role = role
def attack(self,monster):
print(self.role,"打",monster.name)
monster.get_hurt()
class Enermy:
def __init__(self,name):
self.name = name
def get_hurt(self):
print(self.name,"血条-10000")
# 创建一个玩家对象
dj = Player("妲己")
# 创建一个怪兽对象
monster = Enermy("主宰")
dj.attack(monster)
# 输出结果:
# 妲己 打 主宰
# 主宰 血条-10000