python_day11(笔记及练习)


实例成员:对象的不同信息
实例变量:对象.名称
实例方法:def 方法名(self)
类成员:大家共同信息
类变量:定义在类中,方法外; 变量名 = 数据
类方法:@classmethod
def 方法名(cls)
静态方法:独立的功能
封装:
数据角度:多 —> 一
例如:
老婆:姓名、颜值、钱…
敌人:姓名、攻击力、防御力…
向量:x、y
优势:
复合人类思考方式
将数据与对数据的操作合并在一起
行为角度:隐藏(行为) --> 必要(功能)
私有成员:以双下划线命名
障眼法:看见的是双下划线命名的变量
实际是单下划线 + 类名 + 私有变量名

"""
    python 属性全部语法
        核心逻辑:拦截
        目标:保护数据
    10:30
"""

# 1.  读 + 写属性 快捷键:props + 回车
# class Wife:
#     def __init__(self, age=0):
#         self.age = age
#
#     @property
#     def age(self):
#         return self.__age
#
#     @age.setter
#     def age(self, value):
#         self.__age = value
#
# w01 = Wife(25)
# print(w01.age)

# 2. 读 属性   快捷键:prop + 回车
# class Wife:
#     def __init__(self):
#         # 数据从何而来,无所谓(可以从参数来、某个方法来、写死).
#         self.__age = 25
#
#     @property
#     def age(self):
#         return self.__age
#
# w01 = Wife()
# print(w01.age)
#
# w01.age = 222



# 3. 写 属性   快捷键:prop + 回车
# class Wife:
#     def __init__(self, age=0):
#         self.age = age
#
#     age = property()

#     @age.setter# age.setter(..)
#     def age(self, value):
#         self.__age = value
class Wife:
    def __init__(self, age=0):
        self.age = age

    def age(self, value):
        self.__age = value

    age = property(None,age)

# w01 = Wife(25)
# print(w01.__dict__)
# print(w01.age)


""
    封装设计思想
        分而治之:划分为多个类
        变则疏之:识别变化点(行为)
        -------------
        高内聚:类有且只要一个变化点(原因)
        低耦合:类与类的关系松散
"""
# 类与类行为不同
# 对象与对象数据不同

# 需求:老张开车去东北
# 变化:老张、老李、老王...   --> 数据不同
#      划船、骑车、飞机...   --> 行为不同
#      西北、南北...        --> 数据不同

# 写法1
# 语义:老张去东北创建一辆新车
#   老张无论去哪里,都会创建一辆新车
# class Person:
#     def __init__(self, name=""):
#         self.name = name
#
#     def go_to(self,position):
#         print(self.name,"去",position)
#         car = Car()
#         car.run()
#
# class Car:
#     # 实例成员:对象.?
#     def run(self):
#         print("汽车行驶")
#
# lz = Person("老张")
# lz.go_to("东北")# 一辆新车
# lz.go_to("家")# 又一辆新车

# 写法2
# 语义:老张开车自己的车去东北
# class Person:
#     def __init__(self, name=""):
#         self.name = name
#         self.car = Car()
#
#     def go_to(self,position):
#         print(self.name,"去",position)
#         self.car.run()
#
"""
    需求:小明在银行取钱
        现象:人的钱多了   银行的钱少了
"""
class Person:
    def __init__(self,money):
        self.money = money

class Bank:
    def __init__(self,money):
        self.money = money

    def draw_money(self,person,value):
        self.money -= value# 银行钱少了
        person.money += value# 人钱多了

xm = Person(0)
zsyh = Bank(100000)
zsyh.draw_money(xm,5000)
print("小明的钱:",xm.money)
print("银行的钱:",zsyh.money)
"""
    需求:玩家(攻击力)攻击敌人(血量),
         敌人受伤(减血)后可能死亡(播放死亡动画).
"""
class Player:
    def __init__(self, atk=0):
        self.atk = atk

    def attack(self,enemy):
        print("玩家打敌人")
        enemy.damage( self.atk )

class Enemy:
    def __init__(self, hp=0):
        self.hp = hp

    def damage(self,atk):
        self.hp -= atk
        print("额~受伤啦")
        if self.hp <= 0:
            self.__death()

    def __death(self):
        print("播放死亡动画")

p01 = Player(50)
e01 = Enemy(100)
p01.attack(e01)
p01.attack(e01)

"""
    张无忌教赵敏九阳神功
    赵敏教张无忌化妆
    张无忌上班挣了8000
    赵敏上班挣了10000元
"""
class Person:
    def __init__(self, name=""):
        self.name = name

    def teach(self,person_other,skill):
        print(self.name,"教",person_other.name,skill)

    def work(self,salary):
        print(self.name,"上班挣了",salary,"元")

zwj = Person("张无忌")
zm = Person("赵敏")

zwj.teach(zm,"九阳神功")
zm.teach(zwj,"化妆")

zwj.work(8000)
zm.work(10000)

你可能感兴趣的:(#,python基础)