Python学习2

本文介绍了Python中的模块和包的概念,包括导入机制以及time和random模块的使用。同时,详细讲解了面向对象编程的基础,如类的定义、属性、方法,包括继承、多态和运算符重载。此外,还展示了类方法和静态方法的定义与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三天实习报告

一、模块与包

1、定义:

模块是处理某一类问题的集合,模块由函数、类、变量组成。

包是由一系列模块组成的集合。包必须含有一个****init.py文件,用于标识当前文件夹是一个包。

2、模块的导入

格式:

import 模块名 [ as 别名]
from 模块名 import 函数名
from 模块名 import *

当在其他模块中import 的时候,只能导入被导入模块中_**all_变量规定的内容。

__all__ = ["color","country","greet","say"]# 当导入包所有的时候from 包名 import *,规定只有哪些内容可被导入
from mypackage.mymodule import *
greet = "Welcome to China~~~"

def say():
	print("你好,我叫机器人~~~")

当from 包名 import *的时候,会去寻找该包的入口文件(***init.py), 则import 只能导入入口文件中__**all__规定的内容

3、time模块

time()函数返回1970年1月1日00:00:00AM以来的秒数
sleep()函数用来休眠指定的秒数

import time
start = time.time()  # 开始计时
for i in range(1,100000):
	pass   # 啥也不干
	
end = time.time()  # 结束计时
print("循环经过的时间(以秒算):",end-start)

for i in range(0,5):
	print("i=",i)
    time.sleep(1)   # 休眠1秒

4、random模块

randint()函数在一个数字范围内随机挑选一个整数
choice()函数从一个列表或元组中随机选取一个元素
shuffle()函数给列表“洗牌”

import random
numbers = [1,2,6,8,4]
print(random.choice(numbers))  # 从序列中随机选择一个元素
print("洗牌之前:",numbers)
random.shuffle(numbers)   # 对列表进行乱序处理
print("洗牌之后:",numbers)

二、面向对象的程序设计

1、类:

(1)、定义:使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。

class Person:
	def __init__(self,name,money):
    	self.name=name
        self.money=money
        
class rlation:
	pass

per1=Person("wang","1200")
per2=Person("li","1000")
isinstance(per1,Person)

定义了类之后,可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员或成员方法,可以使用内置函数isinstance()来测试一个对象是否为某个类的实例。

“pass”,类似于空语句,可以用在类和函数的定义中或者选择结构中。当暂时没有确定如何实现功能,或者为以后的软件升级预留空间,或者其他类型功能时,可以使用该关键字来“占位”。

(2)、属性

分为实例属性和类属性,实例属性是作为对象的属性,以self作为前缀的属性;类属性是在类内部定义的属性,可以被类中的所有实例共享

(3)、使用方法

类中的函数称为方法:实例方法、类方法、静态方法等

_init()方法:构造方法,用来初始化新创建的对象

@staticmethod装饰器把普通的函数转换为静态方法

@classmethod装饰器定义,被装饰器的方法把类对象作为第一个参数传递(习惯上使用cls)(类本身作为操作对象)

class Bank:
@classmethod
def save(cls,per,account):
	print("存钱")
    per.money+=account
    print("结束")
    
@classmethod
def get(cls,per,account):
    if Bank.check(per)>account:
    	per.money-=account
    else:
    	print("余额不足")
    	
@classmethod
def tranfer(cls,from_per,to_per,account):
    if from_per.money>=account:
        from_per.money-=account
        to_per.money+=account
    else:
        print("余额不足")

@classmethod
def check(cls,per):
    return per.money

(4)、继承

继承是为代码复用和设计复用而设计的,是面向对象程序设计的重要特性之一。

格式:

class 子类名(父类名):
pass

如果需要在派生类(子类)中调用基类(父类)的方法,可以使用super().xxx 来实现这一目的。

class Animal:   # 作为父类
	home = "地球"   
    def __init__(self,name,color):
    	self.name = name
        self.color = color
        
    def describe(self):
    	print("这是",self.name,";颜色是:",self.color)
    	
    	
class Dog(Animal):   #  Dog子类继承Animal父类
	def __init__(self,name,color,food):
		super().__init__(name,color)   # 调用父类的构造方法,并传入两个参数        
		self.food = food
        
    def describe(self):  # 重写(重新实现)父类的describe方法
    	print("这是", self.name, ";颜色是:", self.color,";食物是:",self.food)

支持多重继承,即一个子类可以继承多个父类。语法为:
class_name(parent_class1,parent_class2…)

子类根据父类的顺序优先继承构造方法。

(5)、多态

子类对象可以替代父类对象,在同一个变量在调用不同的方法时,可能表现出多种行为,这种特性称为多态性。

(6)、运算符重载

运算符的重载可以实现对象之间新的运算

class Fruit:
def init(self,name,price):
self.name = name
self.price = price

class Fruit:
    def __init__(self,name,price):
        self.name = name
        self.price = price

	def __add__(self, other):  # 重载加法运算符
    	return self.price + other.price
    
if __name__ == '__main__':
    fruit1 = Fruit("A",12)
    fruit2 = Fruit("A",8)
    print("fruit1+fruit2的结果:",fruit1+fruit2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值