python_类的实例化

#类的实例化

#实例化一
class Custom:
    def __init__(self):
        print('Init Method.')
    def __new__(cls, *args, **kwargs):
        print('New Instance.')
        return object.__new__(cls,*args,**kwargs)
    
if __name__ == '__main__':
    Custom()

#实例化二
class MyMeta(type):
    def __init__(self,name,bases,dicts):
        print('Init Instance.')

    def __new__(cls,name,bases,dicts):
        dicts['info'] = lambda self:print('Djx')
        res = type.__new__(cls,name,bases,dicts)
        res.company = 'apple'
        return res
    
class custom(metaclass=MyMeta):
    pass

if __name__ == '__main__':
    cus = custom()
    cus.info()
    print(cus.company)

### Python 实例化Python 中,实例化过程遵循特定的方式。当创建一个新对象时,实际上是调用了该的 `__new__` 方法来分配内存空间,随后通过 `__init__` 初始化方法设置属性值[^2]。 对于来自不同模块内的多个,在主程序文件里可以通过导入相应模块并访问其中定义的来进行实例化操作: #### 实例化单个 假设有一个简单的定义如下所示: ```python # 定义在一个名为example_module.py 的文件中 class ExampleClass: def __init__(self, value): self.value = value print(f"{type(self).__name__} called with {value}") ``` 可以在另一个脚本中这样使用它: ```python from example_module import ExampleClass instance = ExampleClass("test") # 输出: "ExampleClass called with test" print(instance.value) # 输出: "test" ``` #### 动态加载和实例化 如果希望从字符串名称动态获取并对其进行实例化,则可以采用以下方式实现跨模块的对象创建: ```python import importlib modules_and_classes = [("a", "A"), ("b", "B")] instances = [] for module_name, class_name in modules_and_classes: module = importlib.import_module(module_name) cls = getattr(module, class_name) instance = cls() instances.append(instance) for inst in instances: print(type(inst)) ``` 这里假设有两个分别位于 `a.py` 和 `b.py` 文件里的 A 和 B ,上述代码会依次导入这两个模块,并根据给定的名字找到对应的完成实例化工作[^1]。 需要注意的是,实际应用中应当确保所涉及路径已加入到系统的 PYTHONPATH 环境变量或者当前工作目录下以便顺利定位目标模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值