python 获取已实例化对象的参数
时间: 2023-10-19 15:11:39 浏览: 188
如果你已经创建了一个对象,并且想获取对象的参数,可以使用 `vars()` 函数或 `__dict__` 属性。
假设我们有一个类 `Person`,有两个参数 `name` 和 `age`,我们创建了一个实例化对象 `p`:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
```
如果要获取 `p` 的参数,可以使用 `vars()` 函数或 `__dict__` 属性:
```python
# 使用 vars() 函数
print(vars(p)) # {'name': 'Alice', 'age': 25}
# 使用 __dict__ 属性
print(p.__dict__) # {'name': 'Alice', 'age': 25}
```
这两种方法都会返回一个字典,其中键是参数名,值是参数的值。注意,这些方法只能获取实例化对象的参数,而不能获取类的参数。如果要获取类的参数,可以使用 `__init__.__code__.co_varnames` 属性。
相关问题
python 获取已实例化对象的参数并重新实例化对象
在 Python 中,可以使用 `vars` 函数或 `__dict__` 属性获取已实例化对象的属性和值。然后,可以使用这些属性和值来重新实例化对象。
例如,如果我们有一个类 `Person`,它有两个属性 `name` 和 `age`:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
```
我们可以创建一个 `Person` 实例:
```python
p = Person('Alice', 25)
```
现在,我们可以使用 `vars` 函数获取该实例的属性和值:
```python
attrs = vars(p)
print(attrs)
# 输出:{'name': 'Alice', 'age': 25}
```
然后,我们可以使用这些属性和值来重新实例化对象:
```python
new_p = Person(**attrs)
print(new_p.name) # 输出:Alice
print(new_p.age) # 输出:25
```
这里的 `**` 符号是用来解包字典的。
python 获取已实例化对象的参数的值
可以通过 `__dict__` 属性获取已实例化对象的参数的值。例如,假设有以下类:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
```
那么可以通过以下方式获取已实例化对象 `p` 的参数值:
```python
p = Person('Alice', 25)
print(p.__dict__)
```
输出结果为:
```
{'name': 'Alice', 'age': 25}
```
注意,这种方式只能获取实例化对象中定义的属性,而不能获取类属性或未定义的属性。如果需要获取类属性,可以使用 `vars()` 函数。例如:
```python
class Person:
species = 'human'
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('Alice', 25)
print(vars(p))
```
输出结果为:
```
{'name': 'Alice', 'age': 25}
```
阅读全文