与Python相处的第四天
前言:今天天气死热 万里有几多云 在某站看到几段话在这里先说一下吧
光啊 飘洒吧! -by光之偶像·荷鲁斯
以我之正义歼灭所有 -by光之偶像·荷鲁斯
我怎能 在这里倒下 呃啊~~~ -by全能之玛特咖
语言 最终 无法改变吗! -by制造者卢克
好了好了 中二到此结束 进入正题
对象
前言:没有对象怎么办?NEW个新对象啊!
类和对象:简单的说,类是对象的蓝图和模板,而对象是类的实例。最后一句话画重点。
类的定义:
格式:class 类名(object):(object可写可不写)
def __init(self):
pass
def 函数名():
pass
if name ==‘main’:
函数名()
self:self是个标记 就像国家有国徽一样能一眼看出是哪个对象里面的。
if:下面的if中的()相当于初始化
类的调用:类名.方法名()
私有变量
私有变量一般用两个下划线+名字来定义
私有变量定义之后不可以在外部调用
调用私有变量:如果硬是要调用私有变量可以查看私有变量的 名字到底定义为什么之后才可以调用或者用下面的另一种方法。
装饰器
访问器:访问器 顾名思义就是访问私有变量的一个东西 @property 然后下面加访问器的函数名字 这样就可以在外部调用私有变量了
经过访问器调用过的私有变狼就会变成一种属性。
_slots_魔法
python是一种动态语言郧西在程运行时给对象绑定新的方法或是属性,也可以对已经绑定的进行解绑或者是修改。
继承
就像 爹有的东西儿子一定有 儿子有的东西爹不一定有一样,子类可以调用父类中的方法,这就是继承
注意:在继承中 子类一定要注意是否初始化了父类中的元素 必须要初始化 必须要初始化 必须要初始化 重要的事情说三遍。
当然在继承中上面的私有变量对于继承也同样适用。但是要记住 尽量不要去用私有变量 将不准在外面想用这个私有变量了呢 可以用一个约定俗成的格式 (_元素 )这样就可以告诉其他人这个很重要 可以调用 可以修改 但是最好不要碰 好奇心会害死猫。
案例1:奥特曼打小怪兽
from abc import ABCMeta, abstractmethod
from random import randint, randrange
class Fighter(object, metaclass=ABCMeta):
"""战斗者"""
# 通过__slots__魔法限定对象可以绑定的成员变量
__slots__ = ('_name', '_hp')
def __init__(self, name, hp):
"""初始化方法
:param name: 名字
:param hp: 生命值
"""
self._name = name
self._hp = hp
@property
def name(self):
return self._name
@property
def hp(self):
return self._hp
@hp.setter
def hp(self, hp):
self._hp = hp if hp >= 0 else 0
@property
def alive(self)