Python---类的继承

"""
一、定义类的继承
类的继承:相关概念在前面已经论述
再来了解一下继承的基本语法
class ClassName(BaseClassName):
    
    .
    .
    .
    

在定义类的时候,可以再括号里写继承的类,如果不用继承类的时候,也要写继承object类,因为python中object是所有类的父类
上面的代码时单继承,python也支持多继承
class ClassName(Base1,Base2,....):
    
    .
    .
    .
    

多继承需要注意的点:
若是父类中有相同的方法名,而在子类使用时未指定,
python 在圆括号中父类的顺序,从左至右搜索 ,
即方法在子类中未找到时,从左到右查找父类中是否包含方法。
"""


# 那么说了那么多,继承的子类可以干什么呢?
# 1.会继承父类的属性及方法
# 2.可以自己定义,覆盖父类的属性和方法

# 二、调用父类的方法
# 继承父类的方法
# 直接看例子
class UserInfo(object):
    ou = 5

    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account


class UserInfo2(UserInfo):
    pass


if __name__ == '__main__':
    userInfo2 = UserInfo2('奥特曼', 23, 123345)
    print(userInfo2.get_account())


# 很难理解,先不急,后续慢慢理解呢

# 三、父类方法的重写
class UserInfo(object):
    ou = 5

    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account

    @classmethod
    def get_name(cls):
        return cls.ou

    @property
    def get_age(self):
        return self._age


class UserInfo2(UserInfo):
    pass


if __name__ == '__main__':
    userInfo2 = UserInfo2('奥特曼', 23, 123345, '男')
    # 打印所有属性
    print(dir(userInfo2))
    # 打印构造函数中的属性
    print(userInfo2.__dict__)
    print(userInfo2.get_name())


# 这样就重写了父类的方法

# 三、子类的类型判断
# 首先用到的函数是isinstance(),对于class的继承关系来说,有时需要判断他的类型

class user1(object):
    pass


class user2(user1):
    pass


class user3(user2):
    pass


# 快捷方式输入main
if __name__ == '__main__':
    A1 = user1()
    A2 = user2()
    A3 = user3()
    # 用isinstance判断一个对象是什么类型
    print(isinstance(A1, user2))
    print(isinstance(A1, user1))
    print(isinstance(A1, user3))
    # 基本类型也可以用他判断
    print(isinstance('奥特曼', str))
    print(isinstance(1234, int))
    print(isinstance(234567, str))

# 通过运行结果可以发现isinstance不仅可以告诉我们,一个对象是否为某种类型,也可以用于基本类型的判断

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