今天是2020年2月20日,晴,6~14℃

一、继承

继承是一种创建新类的方式。新建类将获得原有类的所有属性和方法。原有的类称为父类(超类),新建的类称为子类。

Python中继承的方式如下:

'''

class ClassName(Base):

'''

class Person():#父类

'''Person类的属性和方法'''

class Student(Person):#子类

'''Student类特有的属性和方法'''

1、子类的

init

方法

创建子类实例时,首先需要创建出一个父类实例,为父类的属性赋值。因此父类中若不存在不需要参数的

Init

方法,则子类的

init

方法必须为父类的提供参数。

class Person():#父类

def __init__(self,name,age,gender):

self.name = name

self.age = age

self.gender = gender

class Student(Person):#子类

def __init__(self,name,age,gender):

super().__init__(name,age,gender)#初始化父类

如上,在子类的

init

方法中调用了特殊的 super 函数,获取父类,从而显式调用父类的

init

方法。此外,super 函数还可以用于调用父类的属性和方法。

2、定义子类的属性和方法

让一个类继承另一个类后,可添加子类特有的属性和方法。

class Student(Person):

def __init__(self,name,age,gender,grade,stu_id):

super().__init__(name,age,gender)#初始化父类

self.grade = grade#特有属性grade

self.stu_id = stu_id#特有属性stu_id

def print_stu_id(self):#特有方法print_stu_id

print(self.stu_id)

你可以根据所需添加任意数量的属性和方法。但注意,若一个属性和方法是父类拥有的,应加入父类中;只有当这个属性和方法只属于子类时才加入子类中。

3、重写父类方法

如果父类的方法不符合需求,就可对其进行重写。为此,可在子类中定义一个方法,与要重写的父类方法同名的。这样,在程序运行时Python就不会考虑父类的方法,而使用子类的方法。

class Person():

def print_info(self):#原有方法

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + self.age)

class Student(Person):

def print_info(self):#重写

print("Studnet ID: " + self.stu_id)

print("Grade: " + self.grade)

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + self.age)

person_1 = Person("Alex",18,"Male")

student_1 = Student("Alex",18,"Male",7,20200220)

print("This is a person:")

person_1.print_info()

print("This is a student:")

student_1.print_info()

'''

Output:

This is a person:

Name: Alex

Gender: Male

Age: 18

This is a student:

Studnet ID: 20200220

Grade: 7

Name: Alex

Gender: Male

Age: 18

'''

不同于C++中的重写需要函数名,参数表和返回类型均相同,Python中重写只要方法名相同。

4、以实例为属性

当一个类内的属性和方法过多时,可以将其中一部分作为另一个类提出,并将其作为大类的属性。

class Battery():#电池类

def __init__(self,type_,size):

self.type_ = type_

self.size = size

def print_type(self):

print(self.type_)

def print_size(self):

print(self.size)

class Computer():#电脑类

def __init__(self,battery_type,battery_size,mouse_type,keyboard_type,screen_type):

self.battery = Battery(battery_type,battery_size)#电池实例作为电脑的属性

self.mouse_type = mouse_type

self.keyboard_type = keyboard_type

self.screen_type = screen_type

二、导入类

与函数类似,类也可以存入模块中,然后在主程序中导入相应模块。

1、创建模块

在项目中新建一个名为person.py的的文件,并加入类的定义。

#person.py

class Person():

'''人类'''

def __init__(self,name,age,gender):

'''构造器'''

self.name = name

self.age = age

self.gender = gender

def print_info(self):

'''输出人的信息'''

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + str(self.age))

class Student(Person):

'''学生类'''

def __init__(self,name,age,gender,grade,stu_id):

'''构造器'''

super().__init__(name,age,gender)

self.grade = grade

self.stu_id =stu_id

def print_info(self):

'''输出学生的信息'''

print("Studnet ID: " + str(self.stu_id))

print("Grade: " + str(self.grade))

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + str(self.age))

这样,一个简单的类模块就完成了。

2、导入类

跟导入函数一样,导入类也有多种方式,可以根据需要选用。

● 导入单个类

from person import Student#from module_name import ClassName

● 导入多个类

from person import Person, Student#from module_name import ClassName1, ClassName2, ...

与导入函数相同,也可以使用 as 关键字为类指定别名。

● 导入所有类

from person import *#from module_name import *

以上三种方法均不需要使用句点表示法。

● 导入整个模块

import person

这种导入方法很简单,代码也易于阅读,不会与当前文件使用的任何名称发生冲突。

导入类的方式和导入函数基本一致。同样,导入类时也不推荐使用导入所有类的方法。一般来说,要么导入整个模块使用句点表示法,要么导入需要的类和函数。

● 在模块中导入模块

有时候,需要将类分散到多个模块中,以免模块太大,或在同一个模块中存储不相关的类。将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。 在这种情况下,可在前一个模块中导入必要的类。

#person.py

class Person():

def __init__(self,name,age,gender):

self.name = name

self.age = age

self.gender = gender

def print_info(self):#原有方法

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + str(self.age))

#student.py

from person import Person

class Student(Person):

def __init__(self,name,age,gender,grade,stu_id):

super().__init__(name,age,gender)

self.grade = grade

self.stu_id =stu_id

def print_info(self):#重写

print("Studnet ID: " + str(self.stu_id))

print("Grade: " + str(self.grade))

print("Name: " + self.name)

print("Gender: " + self.gender)

print("Age: " + str(self.age))

#main.py

import student

person_1 = student.Person(...)

student_1 = student.Student(...)

在导入一个模块后,也可以使用在这个模块里导入的模块。调用的方式取决于模块中导入模块的方式和主程序中调用模块的方式。

例如:若都导入整个模块,则需要使用两次句点表示法;若都导入指定类,就不需要句点表示法。

3、Python标准库

在学习如何使用类和导入类后,可以开始使用Python自带的标准库了。Python标标准准库库 是一组模块,安装的Python都包含它。可使用标准库中的任何函数和类,为此 只需在程序开头包含一条简单的import 语句。

查询标准库:

http://pymotw.com/

https://docs.python.org/zh-cn/3/library/index.html

还可以从其他地方下载外部模块使用。

三、类编写规范

1、类名应使用驼峰命名法,即每个单词的开头字母大写。实例名和模块名使用下划线法。

2、对于每个类,都应在定义后紧跟一个文档字符串,简要阐述类的功能。

3、对于每个模块,也应包含一个文档字符串,介绍模块内的类可做什么。

4、在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。

5、需要同时导入标准库中的模块和你编写的模块时,先导入标准库模块的import 语句,再添加一个空行,然后导入你自己编写的模块的import 语句。

python创建person类用printinfo方法_Python学习期刊Day11类和对象(2),日记,与,下相关推荐

  1. python创建person类用printinfo方法_python学习(三)面向对象

    python面向对象 继承 class Person(object): ''' classdocs ''' def __init__(self,name): ''' Constructor ''' s ...

  2. python创建person类用printinfo方法_python高级练习题代码

    一. 1.创建Person类,属性有姓名.年龄.性别,创建方法printInfo,打印这个人的信息 2.创建Student类,继承Person类,属性有学院college ,班级class,重写父类p ...

  3. python创建person类用printinfo方法_python基础练习题7

    classPerson:def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sexdefprintInfo(se ...

  4. python类的初始化方法_python学习之-对象的的初始化与__init__方法

    class OldboyStudent: # name='xxxx' # 相似的特征: school = 'oldboy' # 相似的技能 def choose_course(self): print ...

  5. python创建二维数组的方法_Python创建二维数组的正确姿势

    本文原创发布于微信公众号「极客猴」,欢迎关注第一时间获取更多原创分享 List (列表)是 Python 中最基本的数据结构.在用法上,它有点类似数组,因为每个列表都有一个下标,下标从 0 开始.因此 ...

  6. python函数和模块的使用方法_Python学习06_函数和模块的使用

    引入 在写有些代码的时候,会发现有些步骤重复了多次,他也不像循环,都是相同的东西在重复,而是指做某件事情的步骤方法,做事的人或对象发生了改变,但是方法却没有改变. 要想写出高质量的代码,首先要解决的就 ...

  7. python创建和控制的实体称为_python学习第三天

    今天学习内容有: Python基本数据类型: Int  è  整数,主要用来来进行数学运算 Str  è  字符串,可以保存少量数据并进行相应的操作 Bool è  判断真假,True,False L ...

  8. python中find函数的使用方法_Python学习日记5|BeautifulSoup中find和find_all的用法

    今天是4.20号. 前天晚上看到蒋方舟的一句话: 不要左顾右盼.慢慢积累,慢慢写吧.毕竟除了这样单调的努力,我什么也做不了. 而现在的自己就是个十足的壁花少年. 在进入正题前先说一下每次完成代码后,可 ...

  9. python:掌握类的基本方法。定义一个Circle类,根据圆的半径求周长和面积。 再由Circle类创建2个圆对象,其半径分别为5和10,要求输出各自的周长和面积

    掌握类的基本方法.定义一个Circle类,根据圆的半径求周长和面积. 再由Circle类创建2个圆对象,其半径分别为5和10,要求输出各自的周长和面积 请在[python数据分析之禅]gzh后台,回复 ...

最新文章

  1. python使用np.linspace函数生成均匀的浮点数列表实战:生成浮点数列表、生成浮点数列表(指定是否包含末尾值)
  2. 学生用的笔记本电脑什么样的好_大学生用的学生党笔记本什么牌子好,听听学姐的...
  3. mysql和oracle的锁_关于数据库行锁与表锁的认识
  4. 文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs
  5. postgresql interval 字段拼接
  6. 基于amoeba实现mysql数据库的读写分离/负载均衡
  7. 手把手Java爬虫教学 - 1. 了解爬虫
  8. 这一年,我“生病”了
  9. macos mojave_如何选择退出macOS Mojave Beta
  10. MAC下邮件客户端操作——解决无法登陆GMail IMAP服务器
  11. Java基础:Java的优点和缺点
  12. 从朋友圈看女神的情感状态
  13. 使用webpack5自己搭建react项目脚手架(手把手教,把手伸过来,好软~呸,好手)
  14. 在线音乐播放项目——BY音乐
  15. 金融IC卡非接触式快速支付的先天缺陷与补救措施
  16. k30最小宽度380不管用了_各场所疏散楼梯净宽度知识点归纳
  17. python图片隐写_CTF 图像隐写Python脚本处理
  18. python数据分析的钥匙——pandas库
  19. 智能灯杆控制设备S274可远程控制开关
  20. php css加权重,新站如何提高网站权重

热门文章

  1. 神经网络之感知器算法简单介绍和MATLAB简单实现
  2. [转]python3之模块psutil系统性能信息
  3. 1.8. subshell
  4. jqgrid 批量启动所有行为可编辑状态
  5. Queue.ArrayBlockQueue
  6. 【转】简析 .NET Core 构成体系
  7. 受损虚拟机的修复方法
  8. 学习使用资源文件[6] - 菜单资源
  9. 利用Javascrip实现web窗体的打开和关闭后的刷新
  10. c语言中汉字属于什么类型_练字应该练什么之:汉字基本结构的类型