# 接下来介绍类的多态 csdn
# 首先,概念:对不同的类型的变量进行相同的操作,可以根据对象(或类)类型的不同而表现出不同的行为
# 不同类型的对象对同一消息会做出不同的相应
# 看代码,进一步了解
class User(object):
def __init__(self, name):
self.name = name
def printUser(self):
print('hello!', self.name)
class UserKing(User):
def printUser(self):
print('hello,man:' + self.name)
class UserWoman(User):
def printUser(self):
print('hello,Woman:' + self.name)
def printUserInfo(user):
user.printUser()
if __name__ == '__main__':
userKing = UserKing('奥特曼')
printUserInfo(userKing)
userwoman = UserWoman('大姐')
printUserInfo(userwoman)
# 这里还是需要注意的 调用及引用方式
"""
总结,在上述代码中,userKing和userWoman是两个不同的对象,
对他们调用之前写的printUserInfo方法,他们会自动调用实际类型的print方法,
并做出不同的相应。这就是多态的强大
注意:有继承,才能有多态,也会有不同类的对象对同一信息会做出不同的相应
"""
# 最后,说一下类的访问限制
# 1.类属性的访问限制
# __private_attrs 两个下划线开头
# 声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
# 说明:实际上,python中没有提供私有属性等功能
# 2.类专有的属性
"""
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__ 按照索引赋值
__getitem__ 按照索引获取值
__len__ 获得长度
__cmp__ 比较运算
__call__ 函数调用
__add__ 加运算
__sub__ 减运算
__mul__ 乘运算
__div__ 除运算
__mod__ 求余运算
__pow__ 乘方
当然有些时候我们需要获取类的相关信息,我们可以使用如下的方法:
type(obj):来获取对象的相应类型;
isinstance(obj, type):判断对象是否为指定的 type 类型的实例;
hasattr(obj, attr):判断对象是否具有指定属性/方法;
getattr(obj, attr[, default]) 获取属性/方法的值, 要是没有对应的属性则返回 default 值(前提是设置了 default),否则会抛出 AttributeError 异常;
setattr(obj, attr, value):设定该属性/方法的值,类似于 obj.attr=value;
dir(obj):可以获取相应对象的所有属性和方法名的列表
"""
# 3.方法的访问限制(简单)
# 看下代码即知
class User(object):
def upgrade(self):
pass
def _buy_equipment(self):
pass
def __pk(self):
pass
# 至此,所有关于类的学习结束
至此,类的学习已全部结束喽(Python基础内容完结)~~~~