类的封装
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
self.__life_val = 100 # 定义私有属性
def injured(self):
self.__life_val -= 10
print("%s受伤了,还剩下%d血量" % (self.name, self.__life_val))
self.__money()
def __money(self): # 定义私有方法
print("%s请求查询一下自己的钱包还有多少钱!!!" % self.name)
p = Person("阿三", 18)
# p.injured()
# p.__money() # 无法访问
# print(p.__life_val) # 外部无法访问私有属性
# 如果要去访问私有属性
print(p._Person__life_val)
p._Person__money()
p.__xxx = 555
print(p.__xxx) # 顺便说明一下实例化之后自定义的私有属性不是私有的,是可以被直接修改的
类的多态
一个接口通过不同的对象去调用,能显示不同的效果,这就是多态性
class object:
def eat(self):
raise NotImplementedError("子类没有实现父类要求一定要实现的接口")
class Dog(object):
def eat(self):
print("狗在吃东西!!!")
class Person(object):
def eat(self):
print("人在吃东西!!!")
# 通过统一的函数去调用
def get_food(*args, **kwargs):
for i in args:
i.eat() # 不管你是什么东西,都给我调用eat()方法
d = Dog()
p = Person()
# d.eat()
# p.eat()
get_food(d, p)