动态访问类中的属性方法
动态地方法类中的属性方法,也是一种反射机制。 python中的反射/自省的实现,是通过hasattr、getattr、setattr、delattr四个内置函数实现的,其实这四个内置函数不只可以用在类和对象中,也可以用在模块等其他地方,只是在类和对象中用的很多,所以单独提出来进行解释。
hasattr(key) # 返回的是一个bool值,判断某个成员或者属性在不在类或者对象中
getattr(key,default=xxx) # 获取类或者对象的成员或属性,如果不存在,则会抛出AttributeError异常,如果定义了default那么当没有属性的时候会返回默认值。
setattr(key,value)#假如有这个属性,那么更新这个属性,如果没有就添加这个属性并赋值value
delattr(key)#删除某个属性'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Foo:
def __init__(self,name,age):
self.name=name
self.age=age
def show(self):
return self.name,self.age
obj=Foo("Tom",18)
print(getattr(obj,"name")) # Tom
setattr(obj,"k1",eat)
print(obj.k1) # <function eat at 0x00000162CAD661F0>
print(hasattr(obj,"k1")) # True
delattr(obj,"k1")
show_fun=getattr(obj,"show")
print(show_fun()) # ('Tom', 18)使用字典
dynamic_fun = {"print": print }
dynamic_fun["print"]("hello,world!")类中其他内建属性方法(魔术方法)
init # 构造初始化函数,__new__之后运行
new # 创建实例所需的属性,类似于构造方法
call # 可以使得类的实例通过function方式访问
class# 实例所在的类,实例.class
str # 实例的字符串表示,可读性高
repr # 实例的字符串表示,准确性高
del # 删除实例引用,类似于析构方法
dict # 实例自定义属性,vars(实例.dict)
doc # 类文档,help(类或者实例)
bases #当前类的所有父类
getattribute#属性访问拦截器

卷积示意图
9种生成方法
class Point:
def __init__(self, x, y):
self.x = x
self.y = ypoint1 = Point(1, 2)
point2 = eval("{}({}, {})".format("Point", 1, 2))
point3 = globals()["Point"](1, 2)
point4 = locals()["Point"](1, 2)
point5 = getattr(sys.modules[__name__], "Point")(1, 2)
point6 = copy.deepcopy(point1)
point7 = point1.__class__(1, 2)
point8 = type('Point', (Point, ), {})(1, 2)
point9 = types.new_class('Point', (Point, ), {})(1, 2)动态生成类type
Test = type('Test',(object,),{'num':0}) # 所有类都是type的对象,param1为类名,param2为继承对象,num为类属性,方法`
class Test(object): # 与上述代码等效
num = 0copy
copy.deepcopy()import方式
from Point import Point1 #用这个
# from Point import * #或这个
type(Point1)#Point.Point1
import Point #感觉还是算了
type(Point.Point1)#Point.Point1cmd命令
fsutil file createnew e:\b.txt 1073741824 cmd命令生成大的空文件
路径
# sys.path.append(os.getcwd())
# sys.path.append(os.path.abspath(__file__))
# sys.path.insert(0,os.path.abspath(__file__))库
numba是用来另一种python编译的方式,可用于加速循环,numpy本身矩阵计算速度不慢 初始import librosa库时一直报错,按照网络经验,更改系统变量TEMP的地址,使其不含中文即可。
镜像源
示例0 python -m pip uninstall librosa 示例1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pyside6
示例2 pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pyside6 --force-reinstall
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/ 不同数量的
#可以完成不同的标题,如下:
pip install --target=E:\Python_all\Python310\Lib\site-packages pillow
python -m ensurepip
# 重新升级
python -m pip install --upgrade piphttps://pygobject.readthedocs.io/en/latest/getting_started.html#windows-logo-windows
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/
教程国内镜像msys2
https://www.cnblogs.com/CodeWorkerLiMing/p/12274583.html
Path 的 Home 位置是运行 python3 hello.py 的路径
pytorch
我的电脑的cuda,在
torch-1.13.0+cu117-cp39-cp39-win_amd64
这里面117是cuda版本,cp39指python3.9
setuptools
❝setuptools是python标准的打包分发工具,它可以将我们编写的python项目打包安装,这样其他同事就可以像调用标准库或python第三方库那样直接使用;也可以将项目上传到Pypi供更多人的下载安装使用。 ❞
# 一个例子
import os
from setuptools import find_packages, setup
with open(os.path.join("panda_gym", "version.txt"), "r") as file_handler:
__version__ = file_handler.read().strip()
with open("README.md", "r") as f:
long_description = f.read()
setup(
name="panda_gym",
description="Set of robotic environments based on PyBullet physics engine and gymnasium.",
author="Quentin GALLOUÉDEC",
author_email="gallouedec.quentin@gmail.com",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/qgallouedec/panda-gym",
packages=find_packages(),
include_package_data=True,
package_data={"panda_gym": ["version.txt"]},
version=__version__,
install_requires=["gymnasium>=0.26", "pybullet", "numpy", "scipy"],
extras_require={
"develop": ["pytest-cov", "black", "isort", "pytype", "sphinx", "sphinx-rtd-theme"],
},
classifiers=[
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
)
颜画风的博客