2021-11-16py9

本文通过四个示例详细介绍了Python的面向对象编程概念,包括类的创建、继承、方法重写、装饰器和闭包的运用。首先定义了一个父类并展示了_命名规则和__方法的使用。接着解释了闭包的概念及其特征,并实现了一个用于累加的闭包函数。然后,我们定义了一个装饰器来计算函数执行时间。最后,我们创建了一个类,演示了单下划线属性、类方法、静态方法和委托属性的用法。

1.定义一个父类:
要求:包含三个对象变量,且其中一个对象变量使用_命名
定义一个方法:命名使用__命名
定义一个子类继承上边的父类:且定义一个和父类方法名相同的方法(__)
实例化子类的对象
访问带_的对象变量
访问父类中的__xxx方法
访问子类中的__xxx方法
class Parent:
def __method1(self): # __method1 => _Parent__method1
print(“123”)

class Son(Parent):
def __method1(self): # __method1 => _Son__method1
print(“456”)

子类son从父类继承: _Parent__method1,

子类中有两个方法: _Parent__method1, _Son__method1

son = Son()
son._Son__method1()
son._Parent__method1()
“”"
在这里插入图片描述

2.什么是闭包?
一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。能够读取其他函数内部变量的函数
闭包的特征?
1.嵌套函数
2.内层函数引用了外层函数的变量
3.内层函数作为返回值返回给外层函数
“”"
定义闭包,完成的功能为:传入一个数求和并输出
例如: 传入10 ->输出10
传入15 ->输出25
传入20 ->输出45
“”"
def sum_outer():
data_list = []
def sum_inner(arg):
data_list.append(arg)
print(sum(data_list)) # sum(iterable) => 计算可迭代对象中所有元素的和
return sum_inner

sum_func = sum_outer()
sum_func(10)
sum_func(15)
sum_func(20)
“”"
在这里插入图片描述

3.定义一个装饰器:打印函数运行花费的时间
你在执行之前获取一个时间
执行函数
在执行函数之后获取一个时间
去求时间差
time模块
“”"
import time
def cost_time(func):
def inner(*args, **kwargs):
before_time = time.time()
func(*args, **kwargs)
after_time = time.time()
print(after_time - before_time)
return inner

print(time.time())
“”"
在这里插入图片描述

4.定义一个类:
要求:包含一个对象属性,且用_(单下划线)命名的
定义一个类方法(装饰器)
定义一个静态方法(装饰器)
定义委托属性(三个类装饰器): 可以访问_命名的属性的值
可以修改_命名的属性的值
可以删除_命名的属性
执行:
实例一个对象
调用类方法(类和对象两种方式)
调用静态方法(类和对象两种方式)
对象.委托属性
对象.委托属性 = value
del 对象.委托属性
“”"
class Today:

def __init__(self):
    self._data = None

@staticmethod
def static_method(*args, **kwargs):
    print("This is static method")

@classmethod
def class_method(cls):
    print("This is class method")

@property  # 委托属性data, property: 只提供访问
def data(self):
    return self._data

@data.setter  # 委托属性的修改: xxx.setter
def set_data(self, value):
    self._data = value

@data.deleter # 委托属性的删除:xxx.deleter
def data(self):
    del self._data

today = Today()

调用静态方法: 类.方法/对象.方法

Today.class_method()
Today.static_method()
today.class_method()
today.static_method()

print(today.data)
today.set_data = “data”
print(today.data)
在这里插入图片描述

(E:\VSCodeVenv\isat_env) E:\VSCodeProjects>conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidia 3 channel Terms of Service accepted Channels: - pytorch - nvidia - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge - defaults Platform: win-64 Collecting package metadata (repodata.json): done Solving environment: done ## Package Plan ## environment location: E:\VSCodeVenv\isat_env added / updated specs: - pytorch-cuda=11.8 - pytorch==2.3.1 - torchaudio==2.3.1 - torchvision==0.18.1 The following packages will be downloaded: package | build ---------------------------|----------------- blas-1.0 | mkl 6 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free brotli-python-1.0.9 | py38hd77b12b_8 347 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main certifi-2024.8.30 | py38haa95532_0 163 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main charset-normalizer-3.3.2 | pyhd3eb1b0_0 44 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main cuda-cccl-12.9.27 | 0 16 KB nvidia cuda-cccl_win-64-12.9.27 | 0 1.1 MB nvidia cuda-cudart-11.8.89 | 0 1.4 MB nvidia cuda-cudart-dev-11.8.89 | 0 723 KB nvidia cuda-cupti-11.8.87 | 0 11.5 MB nvidia cuda-libraries-11.8.0 | 0 1 KB nvidia cuda-libraries-dev-11.8.0 | 0 1 KB nvidia cuda-nvrtc-11.8.89 | 0 72.1 MB nvidia cuda-nvrtc-dev-11.8.89 | 0 16.1 MB nvidia cuda-nvtx-11.8.86 | 0 43 KB nvidia cuda-profiler-api-12.9.79 | 0 19 KB nvidia cuda-runtime-11.8.0 | 0 1 KB nvidia cuda-version-12.9 | 3 17 KB nvidia filelock-3.13.1 | py38haa95532_0 21 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main freetype-2.4.10 | 0 1.0 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free gmpy2-2.1.2 | py38h7f96b67_0 160 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main idna-3.7 | py38haa95532_0 115 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main intel-openmp-2025.0.0 | haa95532_1164 2.1 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main jinja2-3.1.4 | py38haa95532_0 271 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main jpeg-8d | 0 175 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free libcublas-11.11.3.6 | 0 33 KB nvidia libcublas-dev-11.11.3.6 | 0 375.9 MB nvidia libcufft-10.9.0.58 | 0 6 KB nvidia libcufft-dev-10.9.0.58 | 0 144.6 MB nvidia libcurand-dev-10.3.10.19 | 0 242 KB nvidia libcusolver-11.4.1.48 | 0 29 KB nvidia libcusolver-dev-11.4.1.48 | 0 94.1 MB nvidia libcusparse-11.7.5.86 | 0 13 KB nvidia libcusparse-dev-11.7.5.86 | 0 175.7 MB nvidia libjpeg-turbo-2.0.0 | h196d8e1_0 618 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main libnpp-11.8.0.86 | 0 294 KB nvidia libnpp-dev-11.8.0.86 | 0 143.2 MB nvidia libnvjpeg-11.9.0.86 | 0 4 KB nvidia libnvjpeg-dev-11.9.0.86 | 0 1.9 MB nvidia libpng-1.6.17 | 0 477 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free libtiff-4.0.2 | 1 627 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free libuv-1.48.0 | h827c3e9_0 322 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main libwebp-1.2.4 | h2bbff1b_0 67 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main libwebp-base-1.2.4 | h2bbff1b_1 304 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main markupsafe-2.1.3 | py38h2bbff1b_0 25 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mkl-2021.4.0 | h0e2418a_729 181.7 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge mkl-service-2.4.0 | py38h2bbff1b_0 51 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mkl_fft-1.3.1 | py38h277e83a_0 139 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mkl_random-1.2.2 | py38hf11a4ad_0 225 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mpc-1.1.0 | h7edee0f_1 260 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mpfr-4.0.2 | h62dcd97_1 1.5 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mpir-3.0.0 | hec2e145_1 1.3 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main mpmath-1.3.0 | py38haa95532_0 832 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main networkx-3.1 | py38haa95532_0 2.7 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main numpy-1.24.3 | py38hf95b240_0 11 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main numpy-base-1.24.3 | py38h005ec55_0 6.1 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main pillow-9.3.0 | py38hdc2b20a_1 1011 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main pysocks-1.7.1 | py38haa95532_0 31 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main pytorch-2.3.1 |py3.8_cuda11.8_cudnn8_0 1.39 GB pytorch pytorch-cuda-11.8 | h24eeafa_6 7 KB pytorch pytorch-mutex-1.0 | cuda 3 KB pytorch pyyaml-6.0.2 | py38h827c3e9_0 173 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main requests-2.32.3 | py38haa95532_0 100 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main six-1.16.0 | pyhd3eb1b0_1 18 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main sympy-1.13.3 | py38haa95532_0 11.3 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main tbb-2021.8.0 | h59b6b97_0 149 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main tk-8.6.14 | h5e9d12e_1 3.5 MB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main torchaudio-2.3.1 | py38_cu118 7.0 MB pytorch torchvision-0.18.1 | py38_cu118 7.7 MB pytorch typing_extensions-4.11.0 | py38haa95532_0 61 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main urllib3-2.2.3 | py38haa95532_0 182 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main win_inet_pton-1.1.0 | py38haa95532_0 35 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main yaml-0.2.5 | he774522_0 62 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main zlib-1.2.13 | h8cc25b3_1 131 KB https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main ------------------------------------------------------------ Total: 2.63 GB The following NEW packages will be INSTALLED: blas anaconda/pkgs/free/win-64::blas-1.0-mkl brotli-python anaconda/pkgs/main/win-64::brotli-python-1.0.9-py38hd77b12b_8 certifi anaconda/pkgs/main/win-64::certifi-2024.8.30-py38haa95532_0 charset-normalizer anaconda/pkgs/main/noarch::charset-normalizer-3.3.2-pyhd3eb1b0_0 cuda-cccl nvidia/win-64::cuda-cccl-12.9.27-0 cuda-cccl_win-64 nvidia/win-64::cuda-cccl_win-64-12.9.27-0 cuda-cudart nvidia/win-64::cuda-cudart-11.8.89-0 cuda-cudart-dev nvidia/win-64::cuda-cudart-dev-11.8.89-0 cuda-cupti nvidia/win-64::cuda-cupti-11.8.87-0 cuda-libraries nvidia/win-64::cuda-libraries-11.8.0-0 cuda-libraries-dev nvidia/win-64::cuda-libraries-dev-11.8.0-0 cuda-nvrtc nvidia/win-64::cuda-nvrtc-11.8.89-0 cuda-nvrtc-dev nvidia/win-64::cuda-nvrtc-dev-11.8.89-0 cuda-nvtx nvidia/win-64::cuda-nvtx-11.8.86-0 cuda-profiler-api nvidia/win-64::cuda-profiler-api-12.9.79-0 cuda-runtime nvidia/win-64::cuda-runtime-11.8.0-0 cuda-version nvidia/noarch::cuda-version-12.9-3 filelock anaconda/pkgs/main/win-64::filelock-3.13.1-py38haa95532_0 freetype anaconda/pkgs/free/win-64::freetype-2.4.10-0 gmpy2 anaconda/pkgs/main/win-64::gmpy2-2.1.2-py38h7f96b67_0 idna anaconda/pkgs/main/win-64::idna-3.7-py38haa95532_0 intel-openmp anaconda/pkgs/main/win-64::intel-openmp-2025.0.0-haa95532_1164 jinja2 anaconda/pkgs/main/win-64::jinja2-3.1.4-py38haa95532_0 jpeg anaconda/pkgs/free/win-64::jpeg-8d-0 libcublas nvidia/win-64::libcublas-11.11.3.6-0 libcublas-dev nvidia/win-64::libcublas-dev-11.11.3.6-0 libcufft nvidia/win-64::libcufft-10.9.0.58-0 libcufft-dev nvidia/win-64::libcufft-dev-10.9.0.58-0 libcurand nvidia/win-64::libcurand-10.3.10.19-0 libcurand-dev nvidia/win-64::libcurand-dev-10.3.10.19-0 libcusolver nvidia/win-64::libcusolver-11.4.1.48-0 libcusolver-dev nvidia/win-64::libcusolver-dev-11.4.1.48-0 libcusparse nvidia/win-64::libcusparse-11.7.5.86-0 libcusparse-dev nvidia/win-64::libcusparse-dev-11.7.5.86-0 libjpeg-turbo anaconda/pkgs/main/win-64::libjpeg-turbo-2.0.0-h196d8e1_0 libnpp nvidia/win-64::libnpp-11.8.0.86-0 libnpp-dev nvidia/win-64::libnpp-dev-11.8.0.86-0 libnvjpeg nvidia/win-64::libnvjpeg-11.9.0.86-0 libnvjpeg-dev nvidia/win-64::libnvjpeg-dev-11.9.0.86-0 libpng anaconda/pkgs/free/win-64::libpng-1.6.17-0 libtiff anaconda/pkgs/free/win-64::libtiff-4.0.2-1 libuv anaconda/pkgs/main/win-64::libuv-1.48.0-h827c3e9_0 libwebp anaconda/pkgs/main/win-64::libwebp-1.2.4-h2bbff1b_0 libwebp-base anaconda/pkgs/main/win-64::libwebp-base-1.2.4-h2bbff1b_1 markupsafe anaconda/pkgs/main/win-64::markupsafe-2.1.3-py38h2bbff1b_0 mkl anaconda/cloud/conda-forge/win-64::mkl-2021.4.0-h0e2418a_729 mkl-service anaconda/pkgs/main/win-64::mkl-service-2.4.0-py38h2bbff1b_0 mkl_fft anaconda/pkgs/main/win-64::mkl_fft-1.3.1-py38h277e83a_0 mkl_random anaconda/pkgs/main/win-64::mkl_random-1.2.2-py38hf11a4ad_0 mpc anaconda/pkgs/main/win-64::mpc-1.1.0-h7edee0f_1 mpfr anaconda/pkgs/main/win-64::mpfr-4.0.2-h62dcd97_1 mpir anaconda/pkgs/main/win-64::mpir-3.0.0-hec2e145_1 mpmath anaconda/pkgs/main/win-64::mpmath-1.3.0-py38haa95532_0 networkx anaconda/pkgs/main/win-64::networkx-3.1-py38haa95532_0 numpy anaconda/pkgs/main/win-64::numpy-1.24.3-py38hf95b240_0 numpy-base anaconda/pkgs/main/win-64::numpy-base-1.24.3-py38h005ec55_0 pillow anaconda/pkgs/main/win-64::pillow-9.3.0-py38hdc2b20a_1 pysocks anaconda/pkgs/main/win-64::pysocks-1.7.1-py38haa95532_0 pytorch pytorch/win-64::pytorch-2.3.1-py3.8_cuda11.8_cudnn8_0 pytorch-cuda pytorch/win-64::pytorch-cuda-11.8-h24eeafa_6 pytorch-mutex pytorch/noarch::pytorch-mutex-1.0-cuda pyyaml anaconda/pkgs/main/win-64::pyyaml-6.0.2-py38h827c3e9_0 requests anaconda/pkgs/main/win-64::requests-2.32.3-py38haa95532_0 six anaconda/pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1 sympy anaconda/pkgs/main/win-64::sympy-1.13.3-py38haa95532_0 tbb anaconda/pkgs/main/win-64::tbb-2021.8.0-h59b6b97_0 tk anaconda/pkgs/main/win-64::tk-8.6.14-h5e9d12e_1 torchaudio pytorch/win-64::torchaudio-2.3.1-py38_cu118 torchvision pytorch/win-64::torchvision-0.18.1-py38_cu118 typing_extensions anaconda/pkgs/main/win-64::typing_extensions-4.11.0-py38haa95532_0 urllib3 anaconda/pkgs/main/win-64::urllib3-2.2.3-py38haa95532_0 win_inet_pton anaconda/pkgs/main/win-64::win_inet_pton-1.1.0-py38haa95532_0 yaml anaconda/pkgs/main/win-64::yaml-0.2.5-he774522_0 zlib anaconda/pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1 Proceed ([y]/n)? y Downloading and Extracting Packages: pytorch-2.3.1 | 1.39 GB | #############6 | 10% libcublas-dev-11.11. | 375.9 MB | ######2 | 5% mkl-2021.4.0 | 181.7 MB | #################################################################################################################################### | 100% libcusparse-dev-11.7 | 175.7 MB | #################1 | 13% libcufft-dev-10.9.0. | 144.6 MB | #################################################################################################################################### | 100% libnpp-dev-11.8.0.86 | 143.2 MB | #################################################################################################################################### | 100% libcusolver-dev-11.4 | 94.1 MB | ###########6 | 9% cuda-nvrtc-11.8.89 | 72.1 MB | ######### | 7% cuda-nvrtc-dev-11.8. | 16.1 MB | | 0% cuda-cupti-11.8.87 | 11.5 MB | | 0% sympy-1.13.3 | 11.3 MB | | 0% torchvision-0.18.1 | 7.7 MB | | 0% torchaudio-2.3.1 | 7.0 MB | | 0% numpy-base-1.24.3 | 6.1 MB | | 0% tk-8.6.14 | 3.5 MB | | 0% networkx-3.1 | 2.7 MB | | 0% intel-openmp-2025.0. | 2.1 MB | | 0% libnvjpeg-dev-11.9.0 | 1.9 MB | | 0% mpfr-4.0.2 | 1.5 MB | | 0% cuda-cudart-11.8.89 | 1.4 MB | | 0% mpir-3.0.0 | 1.3 MB | | 0% cuda-cccl_win-64-12. | 1.1 MB | | 0% freetype-2.4.10 | 1.0 MB | | 0% ... (more hidden) ...
最新发布
08-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值