数据角度:将一些基本数据类型复合成一个自定义类
行为角度:向类外提供必要的功能,隐藏实现的细节
将一个大的需求分解为许多类,变化的地方独立封装,避免影响其他类
类中各个方法都在完成一项任务(单一职责的类)
类与类的关联性与依赖度要低
class Person:
"""
老王去北京
"""
def __init__(self,name):
self.name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,value):
self.__name = value
def go_to(self,str_postion,type):
print(self.name,"去",str_postion)
type.run(str_postion)
class Car:
def run(self,str_postion):
print("行驶到:",str_postion)
lw = Person("老王")
car = Car()
lw.go_to("北京",car)
# -*- coding: UTF-8 -*-
class Person:
"""
小米到招商银行存钱
"""
def __init__(self,name):
self.name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,value):
self.__name = value
def save(self,postion):
print(self.name+"去"+postion.name+"存钱")
postion.save_money()
class Bank:
def __init__(self,name):
self.name = name
@property
def name(self):
return self.__name
@name.setter
def name(self, value):
self.__name = value
def save_money(self):
print("存钱了")
xiaomi = Person("小米")
bank = Bank("招商银行")
xiaomi.save(bank)
class Person:
def __init__(self,name,money):
self.name = name
self.money = money
@property
def name(self):
return self.__name
@name.setter
def name(self,value):
self.__name = value
@property
def money(self):
return self.__money
@money.setter
def money(self, value):
self.__money = value
def teach(self,student,skill):
print(self.__name+"教"+student+skill)
def go_to_work(self,money):
self.__money += money
print(self.name+"去上班赚了"+str(money))
zhang = Person("张无忌",1000)
zhao = Person("赵敏",1000)
zhang.teach(zhao.name,"九阳神功")
zhao.teach(zhang.name,"化妆")
zhang.go_to_work(6000)
zhao.go_to_work(6000)
class Enemy:
def __init__(self,name,hp,attack):
self.name = name
self.hp = hp
self.attack=attack
def __qut_equipment(self):
print("掉装备")
print("加分")
def attack_methods(self,other):
print("敌人攻击玩家")
other.injured(self)
def injured(self,other):
print('敌人受伤了')
self.hp-=other.attack
if self.hp <=0:
self.__death()
def __death(self):
print("敌人死亡")
self.__qut_equipment()
class Player:
def __init__(self,name,hp,attack):
self.name = name
self.hp = hp
self.attack=attack
def attack_methods(self, other):
print("玩家攻击敌人")
other.injured(self)
def injured(self, other):
print('玩家受伤了')
self.hp -= other.attack
if self.hp <= 0:
self.__death()
def __death(self):
print("玩家死亡")
player = Player("张无忌",100,100)
enemy = Enemy("怪物",200,10)
player.attack_methods(enemy)
enemy.attack_methods(player)
player.attack_methods(enemy)