1.20 Python学习日志 @prorperty

assert断言

判断代码是否符合预期,后接一个逻辑表达式,若结果为非则报错,一般用于单元测试

自定义异常

# 创建一个自定义异常类
class CustomError(Exception):
    def __init__(self, message="This is a custom exception."):
        self.message = message
        super().__init__(self.message)

del 语句用于删除对象的引用,这可能导致对象被垃圾回收

@property注解

将一个方法转化为一个只读属性(但可以定义属性的setter方法),提供方法类似属性的访问方式,允许在获取或修改属性值时执行一些逻辑

class MyClass:
    def __init__(self, value: int):
        self._value = value

    @property
    def value(self) -> int:
        """get the value of this class"""

        return self._value

    @value.setter
    def value(self, new_value: int) -> None:
        """et the value of this class"""
        if new_value < 0:
            raise ValueError("Value must be greater than 0")
        self._value = new_value

    @value.deleter
    def value(self) -> None:
        """delete the value of this class"""
        print("deleting value" + "--" * 10)
        del self._value

Python反射

反射指 运行时检查访问和修改对象的能力,py提供内置方法提供相关功能使得我们可以通过字符串形式引用对象的属性方法以及类的信息

class Myclass:

    def __init__(self):
        self.x = 42

    def myfunction(self):
        pass


obj = Myclass()
getattr(obj, "x", None)
hasattr(obj, "x")
setattr(obj, "x", 10)
delattr(obj, "x")
print(obj.__dict__)  # 返回该实例的变量字典,不包含类的命令的空间
print(dir(obj))  # 列出对象的属性方法,包括继承的属性和全局命名空间,实质是调用了下面的方法
print(obj.__dir__())  # 可以被重写以提供自定义的目录信息

类的命名空间和全局命名空间

类:类变量、类方法、类属性

全局:所有模块共享,全局变量、函数

类定义体

class Myclass:

    print("yes")

    def __init__(self):

        print("__init__ called")

    print("no")

对于直接放置在类定义体内部而不是任何方法中的类定义语句,解释器都将会执行,其次在创建实例时才执行init方法。但大多数情况下初始化工作都应该放在init方法中

动态加载模块

根据配置加载不同模块或者按需加载

# 方案一
import importlib 

sample_model = importlib.import_model(module_name)


#方案二
sample_model = __import__(model_name)

# 方案三
import importlib.machinery

loader = importlib.machinery.SourceFileLoader(module_name, "/path/to/math.py")
math_module = loader.load_module()

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值