"""
演示 hasattr 和 ** 解包操作符
"""
============================================================================
1. 演示 ** 解包操作符
============================================================================
print("=" * 60)
print("1. 演示 ** 解包操作符")
print("=" * 60)
定义一个函数
def create_person(name, age, city="Unknown"):
return f"{name}, {age} years old, from {city}"
方式1:直接传参数
result1 = create_person("Alice", 25, "Beijing")
print(f"方式1(直接传参): {result1}")
方式2:使用字典和 ** 解包
person_data = {
"name": "Bob",
"age": 30,
"city": "Shanghai"
}
result2 = create_person(person_data)
print(f"方式2( 解包): {result2}")
方式3:部分参数
person_data2 = {
"name": "Charlie",
"age": 28
city 使用默认值
}
result3 = create_person(**person_data2)
print(f"方式3(部分参数): {result3}")
print()
============================================================================
2. 演示 hasattr
============================================================================
print("=" * 60)
print("2. 演示 hasattr")
print("=" * 60)
class Person:
def init (self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, I'm {self.name}"
创建一个对象
person = Person("David", 35)
检查属性
print(f"hasattr(person, 'name'): {hasattr(person, 'name')}")
print(f"hasattr(person, 'age'): {hasattr(person, 'age')}")
print(f"hasattr(person, 'email'): {hasattr(person, 'email')}")
检查方法
print(f"hasattr(person, 'greet'): {hasattr(person, 'greet')}")
print(f"hasattr(person, 'say_goodbye'): {hasattr(person, 'say_goodbye')}")
检查 dict 属性
print(f"hasattr(person, 'dict '): {hasattr(person, 'dict ')}")
if hasattr(person, 'dict '):
print(f"person.dict : {person.dict}")
print()
============================================================================
3. 演示 hasattr 在代码中的应用
============================================================================
print("=" * 60)
print("3. 演示 hasattr 在代码中的应用")
print("=" * 60)
def convert_to_dict(data):
"""将数据转换为字典"""
if isinstance(data, dict):
return data
elif hasattr(data, 'dict '):
如果对象有 dict 属性,转换为字典
return dict(data.dict )
else:
return {}
测试不同类型的输入
test_dict = {"key": "value"}
test_object = Person("Eve", 40)
test_string = "hello"
print(f"字典转换: {convert_to_dict(test_dict)}")
print(f"对象转换: {convert_to_dict(test_object)}")
print(f"字符串转换: {convert_to_dict(test_string)}")
print()
============================================================================
4. 完整示例:模拟 DescribeWorkflowRequest
============================================================================
print("=" * 60)
print("4. 完整示例:模拟 DescribeWorkflowRequest")
print("=" * 60)
import json
from typing import Optional
class SimpleRequest:
def init (self, session_id: str, dsl_data: Optional[str] = None):
self.session_id = session_id
self.dsl_data = dsl_data
从 JSON 字符串创建
json_string = '{"session_id": "abc123", "dsl_data": "some data"}'
json_data = json.loads(json_string)
print(f"JSON 数据: {json_data}")
print(f"JSON 数据类型: {type(json_data)}")
使用 ** 解包创建对象
request = SimpleRequest(**json_data)
print(f"创建的对象: session_id={request.session_id}, dsl_data={request.dsl_data}")
检查对象属性
print(f"对象有 dict : {hasattr(request, 'dict ')}")
if hasattr(request, 'dict '):
print(f"对象的 dict : {request.dict}")