python3学习笔记--003--写一个自定义的包

代码布局:

[[email protected] packagetest]$ tree
.
├── mypackage
│   ├── human.py
│   ├── __init__.py
│   └── student.py
└── test.py

1 directory, 4 files
[[email protected] packagetest]$

mypackage/human.py

#!/usr/bin/env python
class person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    def sayHello(self,msg=‘Hello‘):
        print(msg)

    def printInfo(self):
        print(‘name:‘ + self.name + ‘ age:‘ + str(self.age) + ‘ sex:‘ + self.sex )

mypackage/student.py

#!/usr/bin/env python
from mypackage.human import person

class student(person):
    def __init__(self,name,age,sex,stuid,score):
        person.__init__(self,name,age,sex)
        self.stuid = stuid
        self.score = score

    def sayHi(self,msg=‘Hi‘):
        print(msg)

    def printInfo(self):
        person.printInfo(self)
        print(‘stuid:‘ + str(self.stuid) + ‘ score:‘ + str(self.score) )

test.py

#!/usr/bin/env python
from mypackage.human import person
from mypackage.student import student

per = person(‘person‘,24,‘man‘)
per.sayHello()
per.printInfo()

stu = student(‘xiaodaima‘,23,‘man‘,1001,100)
stu.sayHi()
stu.printInfo()

运行效果:

[[email protected] packagetest]$ ./test.py
Hello
name:person age:24 sex:man
Hi
name:xiaodaima age:23 sex:man
stuid:1001 score:100
[[email protected] packagetest]$

自定义的包中,必须有__init__.py文件

在自定义包的时候,如果要引入其它包,则使用from import就可以,使用import怎么在自定义包中再引入其它的自定义包,暂时还不知道具体方法

时间: 2024-10-11 14:21:17

python3学习笔记--003--写一个自定义的包的相关文章

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

DuiLib学习笔记2——写一个简单的程序

我们要独立出来自己创建一个项目,在我们自己的项目上加皮肤这才是初衷.我的新建项目名为:duilibTest 在duilib根目录下面有个 Duilib入门文档.doc 我们就按这个教程开始入门 首先新建一个win32项目 去DuiLib根目录,把目录下DuiLib文件夹拷贝到新建项目的根目录.再把这个项目添加进我们解决方案中. 从教程里面把以下代码粘贴到我们项目的stdafx.h中 // Duilib使用设置部分 #pragma once #define WIN32_LEAN_AND_MEAN

《python灰帽子》学习笔记:写一个windos 调试器(一)

一.开发内容介绍 为了对一个进程进行调试,你首先必须用一些方法把调试器和进程连接起来.所以, 我们的调试器要不然就是装载一个可执行程序然后运行它, 要不然就是动态的附加到一个运行的进程.Windows 的调试接口(Windows debugging API)提供了一个非常简单的方法完成这两点. 运行一个程序和附加到一个程序有细微的差别. 打开一个程序的优点在于他能在程序运行任何代码之前完全的控制程序. 这在分析病毒或者恶意代码的时候非常有用. 附加到一个进程,仅仅是强行的进入一个已经运行了的进程

Git学习笔记(9)——自定义配置

本文主要记录了Git的一些易用化的配置和别名的使用 配置Git的命令输出带有颜色,更加醒目 //配置输出颜色 $ git config --global color.ui true //取消输出颜色 $ git config --global color.ui false 忽略特殊文件配置 有些时候,必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件等等,每次git status都会显示Untracked files ...,这让有强迫症的我们好难受啊. Git

Servlet学习笔记(六)—— 自定义过滤器的编写

Boss今天让我写一个类似BBS留言板的过滤器,要求对字符编码.登录权限.敏感词进行过滤操作. 总体分两模块: 一.过滤器 //Filter.java package lewa; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public interface Filter { public void init(); public void doFilter(ServletRequest reu

Servlet学习笔记(八)—— 自定义过滤器的编写改进:自定义实现FilterChain

笔记六中实现了三种过滤器:字符编码过滤.登录权限过滤.敏感词过滤,但是有个缺陷就是,限定了过滤顺序,而不能实现先进行request过滤,最后response过滤,并且中间几项过滤的顺序不能动态改变.所以这里做个改进,实现一个过滤顺序的FilterChain. 多个Filter的执行顺序在这篇博文中得到很仔细的讲解,总结一点,多个过滤器的执行顺序是根据web.xml中不同<filter-mapping>的顺序来先后执行的,比如: <?xml version="1.0"

ASP.NET学习笔记--自己写的Login.aspx

以前有大学有学过,但是没学好,现在准备完全自己动手做一个网站,学习一下ASP.NET 做一个登录页面,首先要有创建一个新的网站,添加Login.aspx,然后做出自己想要的DIV和CSS布局, 之后创建自己的数据库,代码如下: USE [master] GO IF EXISTS(SELECT * FROM dbo.sysdatabases where dbid=DB_ID('MyStore')) DROP DATABASE MyStore GO CREATE DATABASE [MyStore]

【NetCore学习笔记之TagHelper】自定义自己的TagHelper

自打Netcore推出以来,很多人是紧追不舍,关注度颇高,一时间让它成为了asp.net中的一等公民.我也是其中一份子,顶多算是一个伪粉丝吧,因为关注不太多,不够深. 今天,主要记录的学习笔记是:如何自定义自己的Taghelper.话不多说,直入正题: 1.定义接口 public interface ICountryService { IEnumerable<CountryModel> GetAll(); } 2.定义接口实现类 public class CountryService : IC

(原创)c#学习笔记02--编写c#程序03--Windows Forms应用程序

2.3  Windows Forms应用程序 本解讲解如何创建一个windows forms应用程序,参考:(原创)c#学习笔记02--编写c#程序01--开发环境,修改为选择:Windows 窗体应用程序.如下图: 单击“确定”(OK)按钮,创建项目后,应该会看到一个空白的Windows窗体.把鼠标指针移到屏幕左边的“工具箱”(Toolbox)栏上,然后移到“所有 Windows 窗体”(All Windows Forms)选项卡上的Button选项,在该选项上双击,就会在应用程序的主窗体(F

ObjectARX2010 学习笔记003:增加实体到数据库

AcDbObjectId PostToModelSpace(AcDbEntity *pEnt) { //定义块表 AcDbBlockTable *pBlk; acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlk,AcDb::kForRead); //定义块表记录 AcDbBlockTableRecord *pBlkTblRcd; pBlk->getAt(ACDB_MODEL_SPACE,pBlkTblR