# 31.类
class Point:
# 构造函数
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
# 自定义函数
def move(self):
print("move")
def draw(self):
print("draw")
# 定义一个Point类的实例point1
# 注意:新建实例的参数要与构造函数一致
point1 = Point(1, 1, 1)
# 为point新建立属性
point1.h = 5
point1.i = 5
point1.j = 5
print(point1.h, point1.i, point1.j) # 5 5 5
# 使用Point类中定义好的函数
point1.draw() # draw
point = Point(10, 20, 20)
print(point.x + point.y + point.z) # 50
// 练习:做一个自我介绍类,负责介绍自己的名字。
class Person:
def __init__(self, name):
self.name = name
def talk(self):
print(f'Hi, I am {self.name}')
people = Person("zhangsan")
people.talk() # Hi, I am zhangsan
# 32.继承
class Mammal:
def walk(self):
print("walk")
def none(self):
pass # 这是一个没有实际(空)操作的函数,只是作为一个占位符,使程序正常运行。
class Dog(Mammal): # Dog类继承Mammal类,拥有Mammal类的属性
def bark(self):
print("bark")
class Cat(Mammal): # Cat类,同上
def be_annoying(self):
print("annoying")
dog1 = Dog()
dog1.bark() # bark
dog1.walk() # walk
# 33.模块
// 在项目中新建converters.py文件
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
// 主函数
import converters # 导入建立的功能模块
# 调用模块中的函数
kg = converters.lbs_to_kg(120)
print(kg) # 54.0
from converters import kg_to_lbs # 导入功能模块中的函数
# 直接调用模块中的函数(更方便在主函数中调用)
lbs = kg_to_lbs(52)
print(lbs) # 115.55555555555556
//练习:在项目中创建一个py文件,定义一个查询列表(元组)中最大数的函数。
// utils.py
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
// 主函数
from utils import find_max
numbers = (12, 23, 3, 32, 4)
find_max(numbers) # 32
print(max(numbers)) # 32, 也可直接使用内置函数完成查询
# 34.导外部包的常用方式
// 定义了一个外部包economy,在包内定义一个shipping函数
// def calc_shipping(): // print("calc_shipping")
import ecommerce.shipping # 导入包模块
ecommerce.shipping.calc_shipping() # calc_shipping
from ecommerce import shipping
shipping.calc_shipping() # calc_shipping
from ecommerce.shipping import calc_shipping
calc_shipping() # calc_shipping
# 35. 生成随机值(使用内置模块)
import random # 随机数
for i in range(3):
print(random.random()) # 生成一个在0到1之间的随机浮点数(包括0但不包括1)。
'''
0.12912375899836237
0.5551522914638384
0.18978329682237072
0.10174765535653596
0.6356867817147159
0.40973587672794365
'''
for i in range(3):
print(random.randint(1, 10)) # 4 10 9 ,生成1到10的随机整数。
members = ['hi', 'you', 'are', 'ok']
leader = random.choice(members) # 从给定的列表 members 中随机选择一个成员作为 leader
print(leader) # you
// 练习:骰子制作的基本思路
import random
class Dice:
def roll(self):
first = random.randint(1, 6)
second = random.randint(1, 6)
return first, second
dice = Dice()
print(dice.roll())
'''
(6, 4)
(1, 4)
(3, 1)
'''
# 36. 使用路径
from pathlib import Path
path = Path("ecommerce")
print(path.exists()) # True,检测路径是否存在
# 创建一个指向"ecommerce3"的路径对象将尝试创建路径中指定的目录。
# parents=True意味着如果父目录不存在,也会一并创建。exist_ok=True表示如果目录已经存在,不会引发异常,而是继续执行。
Path("ecommerce3").mkdir(parents=True, exist_ok=True)
# 删除目录
Path("ecommerce3").rmdir()
# 搜索文件,glob方法来遍历某个目录下的所有文件和子目录。
path_search = Path()
for file in path_search.glob('*'):
print(file)
'''
.idea
converters.py
ecommerce
ecommerce2
main.py
venv
__pycache__
'''
print("______")
# glob方法来遍历某个目录下的所有py文件。
for file in path_search.glob('*.py'):
print(file)
'''
converters.py
main.py
'''