python入门之类的继承_类的继承-python编程入门系列图文教程 - Python学习网

类的继承

1、定义类的继承

首先我们来看下类的继承的基本语法:

class ClassName(BaseClassName):

.

.

.

1、定义类的继承

首先我们来看下类的继承的基本语法:class ClassName(BaseClassName):

.

.

.

在定义类的时候,可以在括号里写继承的类,一开始也提到过,如果不用继承类的时候,也要写继承 object 类,因为在 Python 中 object 类是一切类的父类。

当然上面的是单继承,Python 也是支持多继承的,具体的语法如下:class ClassName(Base1,Base2,Base3):

.

.

.

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

那么继承的子类可以干什么呢?

继承的子类的好处:

会继承父类的属性和方法

可以自己定义,覆盖父类的属性和方法

2、调用父类的方法

一个类继承了父类后,可以直接调用父类的方法的,比如下面的例子,UserInfo2 继承自父类 UserInfo ,可以直接调用父类的 get_account 方法。#!/usr/bin/env python

# -*- coding: UTF-8 -*-

class UserInfo(object):

lv = 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, 347073565);

print(userInfo2.get_account())

3、父类方法的重写

当然,也可以重写父类的方法。

示例:#!/usr/bin/env python3

# -*- coding: UTF-8 -*-

class UserInfo(object):

lv = 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.lv

@property

def get_age(self):

return self._age

class UserInfo2(UserInfo):

def __init__(self, name, age, account, sex):

super(UserInfo2, self).__init__(name, age, account)

self.sex = sex;

if __name__ == '__main__':

userInfo2 = UserInfo2('两点水', 23, 347073565, '男');

# 打印所有属性

print(dir(userInfo2))

# 打印构造函数中的属性

print(userInfo2.__dict__)

print(UserInfo2.get_name())

最后打印的结果:

5668cde2914315c3308ff973d830e9dd.png

这里就是重写了父类的构造函数。

4、子类的类型判断

对于 class 的继承关系来说,有些时候我们需要判断 class 的类型,该怎么办呢?

可以使用 isinstance() 函数,

一个例子就能看懂 isinstance() 函数的用法了。#!/usr/bin/env python3

# -*- coding: UTF-8 -*-

class User1(object):

pass

class User2(User1):

pass

class User3(User2):

pass

if __name__ == '__main__':

user1 = User1()

user2 = User2()

user3 = User3()

# isinstance()就可以告诉我们,一个对象是否是某种类型

print(isinstance(user3, User2))

print(isinstance(user3, User1))

print(isinstance(user3, User3))

# 基本类型也可以用isinstance()判断

print(isinstance('两点水', str))

print(isinstance(347073565, int))

print(isinstance(347073565, str))

输出的结果如下:True

True

True

True

True

False

可以看到 isinstance() 不仅可以告诉我们,一个对象是否是某种类型,也可以用于基本类型的判断。

任务

?不会了怎么办

你可能感兴趣的:(python入门之类的继承)