#加载武器的人和狗大战  类的组合1
# class Dog: # 定义一个狗类
# def __init__(self, name, breed, aggressivity, life_value):
# self.name = name # 每一只狗都有自己的昵称;
# self.breed = breed # 每一只狗都有自己的品种;
# self.aggressivity = aggressivity # 每一只狗都有自己的攻击力;
# self.life_value = life_value # 每一只狗都有自己的生命值;
# def bite(self,person_obj):
# print('%s咬了%s'%(self.name,person_obj.name))
# person_obj.lif_value -= self.aggressivity
# class Person: # 定义一个人类
# def __init__(self, name, aggressivity, life_value, money):
# self.name = name # 每一个角色都有自己的昵称;
# self.aggressivity = aggressivity # 每一个角色都有自己的攻击力;
# self.life_value = life_value # 每一个角色都有自己的生命值;
# self.money = money
# def attack(self,dog_obj):
# print('%s攻击了%s'%(self.name,dog_obj.name))
# dog_obj.life_value -= self.aggressivity
# def get_weapon(self,weapon_obj):
# if self.money > weapon_obj.price:
# self.money -= weapon_obj.price
# self.weapon = weapon_obj
# self.aggressivity+= weapon_obj.agge
# class Weapon:
# def __init__(self,name,agge,price):
# self.name = name
# self.agge = agge
# self.price = price
#
# dagl = Weapon('打狗棍',120,99)
# huang = Dog('huazi','zangao',100,1000)
# boss_Jin = Person('金老板',30,600,100)
# # print(boss_Jin.name)
# boss_Jin.get_weapon(dagl)
# boss_Jin.attack(huang)
# print(huang.life_value)

# -------------
# 组合实例2
# class Teachers:
# def __init__(self,name,sex,age,year,month,day):
# self.name = name
# self.sex = sex
# self.age = age
# self.bir = Birthday(year,month,day)
# #Birthday(year, month, day) 等于Birthday 的对象 ,self.bir 是Teachers 的属性
# 所以 Teachers这个类 以Birthday 的对象作为属性
# class Birthday:
# def __init__(self,year,month,day):
# self.year = year
# self.month = month
# self.day = day
# boss_Jin = Teachers('太白',33,'男',1999,3,15)
# print(boss_Jin.bir.day)
# -------------

# 组合3 实例
# 一个类的对象 Birthday(year,moth,day)是另一个类的Teachers 的属性,self.bir
# 圆环的面积和周长
# from math import pi
# class Circle:
# def __init__(self,circle_r):
# self.circle_r = circle_r
# def perimetre(self):
# return 2*pi*self.circle_r
# def area(self):
# return pi*self.circle_r**2
# class Rings:
# def __init__(self,d_R,d_r):
# self.d_R = Circle(d_R)
# self.d_r = Circle(d_r)
#
# # Circle()这个是圆的对象 左边的是属性 Rings这个类 以Circle这个类的对象为属性 叫组合
# def ring_perimetre(self):
# return self.d_R.perimetre()+self.d_r.perimetre()
# def ring_area(self):
# return self.d_R.area()-self.d_r.area()
# ring = Rings(10,5)
# print(ring.ring_perimetre())
# print(ring.ring_area())
# 派生属性 : 在自己的init方法里 使用父类的init方法 —— 指名道姓调用方法
#派生方法 : 在子类中增加父类没有的
#只要子类有,就有子类的
#只要想用父类,Animal.eat(snoopy) 父类名.父类的方法(子类对象) 2.7经典类中
# --------
#实例组合4
# 第一种普通攻击 相互 组合 一个类以另一个类的对象为属性。
# class Person :
# def __init__(self,name,aggresivity,life_value,money):
# self.name = name
# self.aggresivity = aggresivity
# self.lv = life_value
# self.money = money
#
# def attack(self,dog_obj):
# print('%s攻击了%s'%(self.name,dog_obj.name))
# dog_obj.lv -= self.aggresivity
# def get_weapon(self,weapon_obj):
# if self.money > weapon_obj.price:
# self.money -= weapon_obj.price
# self. weapon = weapon_obj
# # weapon_obj 是武器打狗棍的对象,然而self。weapon 是属性
# # 正好 一个人的类 以武器的类的对象为属性
# self.aggresivity += weapon_obj.agge
#
# class Dog :
# def __init__(self,name ,aggresivity,life_value):
# self.name = name
# self.aggr = aggresivity
# self.lv = life_value
#
# def bite(self,person_obj):
# print('%s攻击了%s'% ( self.name,person_obj.name))
# person_obj.lv -= self.aggr
# class Weapon:
# def __init__(self,name,agge,price):
# self.name = name
# self.agge = agge
# self.price = price
#
# boss_Jin = Person('金太郎',100,600,100)
# huang = Dog ('皮皮',30,500)
# dgg = Weapon('打狗棍',50,99)
# boss_Jin.get_weapon(dgg)
# boss_Jin.attack(huang)
# print(huang.lv)
# huang.bite(boss_Jin)
# print(boss_Jin.lv)
# -------------
# 以下知识点出了类的组合,还有类的 子类调用父类的方法 1父类名 2 super() 注意super 在内外的区别
#用子类的对象,调用父类的方法:
#如果子类中没有这个方法,直接就使用父类的
#如果子类中有同名方法:
# 经典类 指名道姓 类名.方法名(子类对象) 类内外一致
# 新式类 super方法 super(子类名,子类对象).方法名() 类内可以省略super的参数
# class Animal:
# def __init__(self,name,aggresivity,life_value):
# self.name = name
# self.aggresivity = aggresivity
# self.lv = life_value
# def eat(self):
# self.aggresivity+=50
# print('恭喜您新增50点攻击力')
#
# class Person(Animal):
# def __init__(self,name,aggresivity,life_value,money):
# # Animal.__init__(self,name,aggresivity,life_value)
# super().__init__(name,aggresivity,life_value)
# self.money = money
# def eat(self):
# # Animal.eat(self) #效果1 和效果2相同
# # super().eat() #效果1 和效果2相同
# self.aggresivity += 5
# print('恭喜您新增5点攻击力')
# def attack(self,dog_obj):
# print('%s攻击了%s'%(self.name,dog_obj.name))
# dog_obj.lv -= self.aggresivity
# def get_weapon(self,weapon_obj):
# if self.money > weapon_obj.price:
# self.money -= weapon_obj.price
# self. weapon = weapon_obj
# self.aggresivity += weapon_obj.agge
#
# class Dog(Animal) :
# def __init__(self,name ,aggresivity,life_value):
# # Animal.__init__(self, name, aggresivity, life_value)
# # 1派生属性 : 在自己的init方法里使用父类的init方法 —— 指名道姓调用方法
# super().__init__(name, aggresivity, life_value)
# # 2 这个也是派生属性,()只是里面不需要有参数 1和2 效果是一样的
# def eat(self):
# # Animal.eat(self)
# self.aggresivity += 5
# print('恭喜您新增5点攻击力')
# def bite(self,person_obj): # 派生方法 :父类没有的方法
# print('%s攻击了%s'% ( self.name,person_obj.name))
# person_obj.lv -= self.aggresivity
# class Weapon:
# def __init__(self,name,agge,price):
# self.name = name
# self.agge = agge
# self.price = price
#
# boss_Jin = Person('金太郎',100,600,100)
# huang = Dog ('皮皮',200,500)
# dgg = Weapon('打狗棍',50,99)
# boss_Jin.get_weapon(dgg)
# boss_Jin.attack(huang)
# print(huang.lv)
# huang.bite(boss_Jin)
# print(boss_Jin.lv)
# ---
# boss_Jin.eat()
# print(boss_Jin.aggresivity)
# 恭喜您新增5点攻击力
# 105
# -----
# boss_Jin.eat()
# print(boss_Jin.aggresivity)
# 恭喜您新增50点攻击力
# 恭喜您新增5点攻击力
# 155

# boss_Jin.get_weapon(dgg)
# Animal.eat(boss_Jin)
# super(Person,boss_Jin).eat() ***** 注意super(默认(本层的类名)(自己的对象))
# boss_Jin.eat()
# print(boss_Jin.aggresivity)
# 恭喜您新增50点攻击力
# 恭喜您新增5点攻击力
# 205
while True:
username = input('请输入您的角色')
if username == '学员':

elif username == '讲师':

elif username == '管理员':

else:
break

class School:
school1 = '北京学校'
school2 = '上海学校'
class Classes :
def __init__(self,cycle,price):
self.cycle = cycle
self.price = price

class Bj_school(School):
class1 = 'Python'
class2 = 'linux'

class Sh_school(School):
class3 = 'go'