Python---多态及访问限制(Python基础内容完结~)

# 接下来介绍类的多态 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基础内容完结)~~~~

你可能感兴趣的:(python,开发语言)