python入门基础(11)–类的导入、继承及使用

在上篇“python中的类的创建、使用和继承”中,创建了Person()和Student()两个类,最后才是程序执行主体,如下: 

class Person(): #创建一个person类,父类必须包含在当前文件中,且位于子类前面。
    def __init__(self, name, age,hometown): #父类
        self.name = name   
        self.age = age    
        self.hometown = hometown   #属性hometown  
    def get_name(self):        #定义打印名字的一个方法(函数)  """
        print("The person'name is "+self.name.title()+'.')      
    def get_age(self):         #定义打印年龄的一个方法(函数)  """
        print("The person is "+str(self.age)+' years old.')      
    def get_grade(self):       #定义打印家乡的一个方法  """
        print("The person is grade "+str(self.grade))    
    def play_game(self):        #定义人游戏  """
         print(self.name.title()+" is playing game with his friend !") 
    def get_hometown(self):    #定义打印学生家乡的一个方法  """
         print("The person "+self.name.title()+" is froming "+self.hometown.title())    
         
class Student(Person): #定义子类Student,必须在括号内指定父类的名称  
    def __init__(self, name, age,hometown): #方法 __init__()接受创建Person实例所需的信息
        super().__init__(name, age,hometown)
        self.grade = 7   #设置为默认值 7    
    def do_homework(self):      #定义学生的一个方法(函数),做家庭作业"""
        print(self.name.title()+" is doing his homework now !")    
    def get_student_info(self):   #定义学生的一个方法(函数),打印学生信息"""
        student_info = self.name.title()+' is '+str(self.age)+' years old, and from '+self.hometown +' and  grade '+str(self.grade)
        print(student_info)         
    def update_info(self,new_age,new_grade,new_hometown): #定义更新学生信息一个方法(函数)"""
        self.age = new_age     
        self.grade = new_grade 
        self.hometown = new_hometown  
        
new_student=Student("jack",13,'NewYork')
new_student.get_student_info() #打印学生全部信息
print("n")
student_c=Student("Lily",14,'NewYork')
student_c.get_student_info()  #由于没有修改grade,打印出来为默认值 7
print("n")
#修改实例student_c中的grade
student_c.grade=9  #修改自己的的属性grade为9
student_c.get_student_info() #打印学生全部信息

 随着不断地给类添加功能,文件变得很长。为结构条理清晰,文件整洁,可读性增加。Python允许将类存储在模块中,然后在主程序中导入所需的模块,如同导入模块。

 1)将上述Person()类和Student()类分别存储为person和student两个不同的文件(模块),同时将主要运行放置在一个主程序mainframe中,如下图所示
python入门基础(11)--类的导入、继承及使用

其中person.py文件中内容为:

class Person(): #创建一个person类,父类必须包含在当前文件中,且位于子类前面。
    def __init__(self, name, age,hometown): #父类
        self.name = name   
        self.age = age    
        self.hometown = hometown   #属性hometown  
    def get_name(self):        #定义打印名字的一个方法(函数)  """
        print("The person'name is "+self.name.title()+'.')      
    def get_age(self):         #定义打印年龄的一个方法(函数)  """
        print("The person is "+str(self.age)+' years old.')      
    def get_grade(self):       #定义打印家乡的一个方法  """
        print("The person is grade "+str(self.grade))    
    def play_game(self):        #定义人游戏  """
         print(self.name.title()+" is playing game with his friend !") 
    def get_hometown(self):    #定义打印学生家乡的一个方法  """
         print("The person "+self.name.title()+" is froming "+self.hometown.title())            

student.py文件中的内容为:

from person import *      

class Student(Person): #定义子类Student,必须在括号内指定父类的名称  
    def __init__(self, name, age,hometown): #方法 __init__()接受创建Person实例所需的信息
        super().__init__(name, age,hometown)
        self.grade = 7   #设置为默认值 7    
    def do_homework(self):      #定义学生的一个方法(函数),做家庭作业"""
        print(self.name.title()+" is doing his homework now !")    
    def get_student_info(self):   #定义学生的一个方法(函数),打印学生信息"""
        student_info = self.name.title()+' is '+str(self.age)+' years old, and from '+self.hometown +' and  grade '+str(self.grade)
        print(student_info)         
    def update_info(self,new_age,new_grade,new_hometown): #定义更新学生信息一个方法(函数)"""
        self.age = new_age     
        self.grade = new_grade 
        self.hometown = new_hometown

mainframe.py文件中内容:

from student import *
  
new_student=Student("jack",13,'NewYork')
new_student.get_student_info() #打印学生全部信息
print("n")
student_c=Student("Lily",14,'NewYork')
student_c.get_student_info()  #由于没有修改grade,打印出来为默认值 7
print("n")
#修改实例student_c中的grade
student_c.grade=9  #修改自己的的属性grade为9
student_c.get_student_info() #打印学生全部信息

student.py文件,mainframe.py文件中第一行 的from*** import   * 语句 ,分别为打开模块person和student,并导入其中的Person类和Student类,同模块功能一样。

通过上述分块,将类移到一个模块中,并导入该模块,依然可以使用其所有功能,但主程序文件变得整洁而易于阅读。
python入门基础(11)--类的导入、继承及使用

二、多个类可以存放在一个模块文件中,例如,将上述的Person()类和Student()类放在同个文件中,

class Person(): #创建一个person类,父类必须包含在当前文件中,且位于子类前面。
    def __init__(self, name, age,hometown): #父类
        self.name = name   
        self.age = age    
        self.hometown = hometown   #属性hometown  
    def get_name(self):        #定义打印名字的一个方法(函数)  """
        print("The person'name is "+self.name.title()+'.')      
    def get_age(self):         #定义打印年龄的一个方法(函数)  """
        print("The person is "+str(self.age)+' years old.')      
    def get_grade(self):       #定义打印家乡的一个方法  """
        print("The person is grade "+str(self.grade))    
    def play_game(self):        #定义人游戏  """
         print(self.name.title()+" is playing game with his friend !") 
    def get_hometown(self):    #定义打印学生家乡的一个方法  """
         print("The person "+self.name.title()+" is froming "+self.hometown.title())  
         
class Student(Person): #定义子类Student,必须在括号内指定父类的名称  
    def __init__(self, name, age,hometown): #方法 __init__()接受创建Person实例所需的信息
        super().__init__(name, age,hometown)
        self.grade = 7   #设置为默认值 7    
    def do_homework(self):      #定义学生的一个方法(函数),做家庭作业"""
        print(self.name.title()+" is doing his homework now !")    
    def get_student_info(self):   #定义学生的一个方法(函数),打印学生信息"""
        student_info = self.name.title()+' is '+str(self.age)+' years old, and from '+self.hometown +' and  grade '+str(self.grade)
        print(student_info)         
    def update_info(self,new_age,new_grade,new_hometown): #定义更新学生信息一个方法(函数)"""
        self.age = new_age     
        self.grade = new_grade 
        self.hometown = new_hometown 

导入同一文件模块中的多个类,可直接使用。从一个模块中导入多个类时,用逗号分隔了各个类,导入必要的类后,可根据需求,创建每个类的任意数量的实例。

from person import Person,Student

python入门基础(11)--类的导入、继承及使用

导入整个模块,再使用“模块名.类名” 表示法访问需要的类,如同使用实例的方法一样,如下图所示:

python入门基础(11)--类的导入、继承及使用

 Python标准库是一组模块,安装的 Python 都包含它,可使用标准库中的任何函数和类,为此只需在程序开头包含一条简单的 import 语句

类、模块的命名规则:
1)类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线
实例名和模块名都采用小写格式,并在单词之间加上下划线
2)定义类,后面包含一个简要地描述类的功能文档字符串,并遵循编写函数的文档字符串时采用的格式约定。
模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
3)可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;在模块中,可使用两个空行来分隔类。

4)同时导入标准库中的模块和自己编写的模块时,先导入标准库模块的 import 语句,再添加一个空行,再导入自己编写的模块的 import 语句,让人更容易明白程序使用的各个模块都来自何方

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python入门基础(11)–类的导入、继承及使用 - Python技术站

(0)
上一篇 2023年4月2日 下午5:44
下一篇 2023年4月2日

相关文章

  • python数据可视化-matplotlib入门(7)-从网络加载数据及数据可视化的小总结

    除了从文件加载数据,另一个数据源是互联网,互联网每天产生各种不同的数据,可以用各种各样的方式从互联网加载数据。 一、了解 Web API Web 应用编程接口(API)自动请求网站的特定信息,再对这些信息进行可视化。每次运行,都会获取最新的数据来生成可视化,因此即便网络上的数据瞬息万变,它呈现的信息也都是最新的。 Web API是网站的一部分,用于与使用非常…

    2023年4月2日
    00
  • Python数据分析–Numpy常用函数介绍(7)–Numpy中矩阵和通用函数

    在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以及 bmat 函数来创建矩阵。 一、创建矩阵 mat 函数创建矩阵时,若输入已为 matrix 或 ndarray 对象,则不会为它们创建副本。 因此,调用 mat() 函数和调用 matrix(data, copy=F…

    2023年4月2日
    00
  • python入门基础(12)–文件的读写操作

    文本文件可存储的数据量多、每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序 处理文件,让程序能够快速地分析大量的数据处理文件和保存数据可让你的程序使用起来更容易 一、从文件中读取数据1)读取整个文件:先创建一个任意的文本文件,设置任意行,任意个数据,命名为data.txt,如下所示: 415926535897 9323846264…

    2023年4月2日
    00
  • python入门基础(4)–列表增、删、改及操作

    一、先定义names的列表,其中有5个名字 names=[‘xiaozhan’,’caiyilin’,’huangxiaoyun’,’zhoushen’,’DAOlang’] print(names)   #打印列表所有元素一)修改列表元素 names[1]=’Wukong’     #修改列表中的第2个元素,由原来的caiyilin修改为Wukong pr…

    2023年4月2日
    00
  • Python数据分析–Numpy常用函数介绍(4)–Numpy中的线性关系和数据修剪压缩

    摘要:总结股票均线计算原理–线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是专门用于线性代数计算的。作一个假设,就是一个价格可以根据N个之前的价格利用线性模型计算得出。     前一篇,在计算均线,指数均线时,分别计算了不同的权重,比如 和 都是按不同的计算方法来计算出相关的权重,一个股价可以用之前股价的线性组合表示出来,也即,这个…

    2023年4月2日
    00
  • python数据可视化-matplotlib入门(1)–安装及绘制简单的曲线

    一、安装matplotlib 1)由于已安装anaconda,可直接打开anaconda prompt,再用命令pip install matplotlib进行安装,因镜像问题,可能较慢,建议第2种方式。 2)访问https://pypi.org/project/matplotlib/#files,并查找与你使用的Python版本匹配的wheel文件(扩展名…

    2023年4月2日
    00
  • python数据可视化-matplotlib入门(3)-利用随机函数生成变化图形2

     鉴于上一篇中最后三个问题: 1、上述程序是否能进行优化(比如功能相同的) 2、创建三个3个实例,用了3个语句,能否建一个函数,只输入一个数n,就自动创建n个实例?同时,每个实例的num_times随机,(n比较大时,num_times应该比较小) 3、当实现上述功能后,程序运行,只输入一个参数(创建实例的个数),就会自动生成对应的num_times,并分别…

    2023年4月2日
    00
  • Python数据分析–Numpy常用函数介绍(3)

    摘要:先汇总相关股票价格,然后有选择地对其分类,再计算移动均线、布林线等。 一、汇总数据 汇总整个交易周中从周一到周五的所有数据(包括日期、开盘价、最高价、最低价、收盘价,成交量等),由于我们的数据是从2020年8月24日开始导出,数据多达420条,先截取部分时间段的数据,不妨先读取开始20个交易日的价格。代码如下: import numpy as np f…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部