Class对象简述

 Class<test001> clazz=(Class<test001>) test04.class.getClassLoader().loadClass("com.openlab.test001");
 Class.forName("com.openlab.test001");
 使用Class对象加载类时记得要加上包名   可以用loadClass("")方法与froName()两种方法进行加载
  Method[] mehods=clazz.getMethods();   //加载方法
  Field[] filed=clazz.getDeclaredFields(); //加载属性
  filed[0].getType();//获取属性类型
   filed[0].setAccessible(true);//设置对象的访问权限 true为public
### Python 类实例化的方式 #### 方法一:直接调用类名并传入参数 Python 中实例化类不需要使用 `new` 关键字,只需像调用函数一样使用类名即可。如果构造函数(即 `__init__` 方法)需要参数,则可以在实例化时传递相应的参数。 ```python class Hello: def __init__(self, name): self.name = name def greet(self): print(f"Hello {self.name}") hello_instance = Hello("World") # 创建 Hello 的实例,并传递 "World" 参数给构造函数 hello_instance.greet() # 输出: Hello World ``` 这种方法是最常见的实例化方式[^3]。 #### 方法二:利用工厂模式创建实例 有时为了控制对象的创建过程或提供更灵活的对象初始化逻辑,可以选择实现静态方法作为工厂方法来返回新创建的对象。 ```python from datetime import date class Person: def __init__(self, name, age): self.name = name self.age = age @staticmethod def from_birth_year(name, birthYear): current_year = date.today().year return Person(name, current_year - birthYear) person_instance = Person.from_birth_year('John', 1980) # 使用静态方法创建 Person 实例 print(person_instance.age) # 基于当前年份计算年龄 ``` 这种方式允许更加复杂的实例构建逻辑而无需改变原始构造器的行为[^4]。 #### 方法三:通过元类动态生成类后再实例化 对于高级应用场景,可以通过自定义元类来自动生成新的类定义,在此基础上再进行实例化操作。这通常用于框架开发或其他需要高度抽象化的场景下。 ```python def upper_attr(class_name, class_parents, class_attrs): uppercase_attrs = { attr if callable(value) or attr.startswith('__') else attr.upper(): value for attr, value in class_attrs.items() } return type(class_name, class_parents, uppercase_attrs) class Meta(type): def __new__(cls, name, bases, dct): return super().__new__(cls, name, bases, upper_attr(name, bases, dct)) class MyKlass(metaclass=Meta): bar = 'bip' my_klass_instance = MyKlass() # 动态生成带有特定行为的新类后实例化 print(hasattr(my_klass_instance, 'BAR')) # True ``` 此技术主要用于解决某些特殊需求下的代码重用性和灵活性问题[^5]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值