擅长:python、mysql、java
<p>可以使用<a href="http://docs.python.org/2/library/functions.html#vars" rel="nofollow">^{<cd1>} function</a>直接列出对象上的所有实例属性;它返回一个字典:</p>
<pre><code> >>> vars(Obj)
{'Background': <BackgroundType at 0x...>, 'DisplaySettings': <...>, ...}
</code></pre>
<p>或者可以使用<a href="http://docs.python.org/2/library/functions.html#dir" rel="nofollow">^{<cd2>}</a>,它返回实例及其父级(类、基类及其基类等)的名称列表:</p>
<pre><code>>>> dir(Obj)
['__module__', '__name__', 'Active', 'Background', ...]
</code></pre>
<p>对象上的许多属性都是更复杂的对象,它们有自己的属性。然后检查<code>Background</code>对象,例如:</p>
<pre><code>>>> dir(Obj.Background)
[ ..., 'Picture', ...]
</code></pre>
<p>等等</p>
<p>要跨属性复制,我将坚持使用<code>vars()</code>和要过滤的循环:</p>
<pre><code>dec1 = Obj1.DisplaySettings.DisplayFormat.Source.Dec
dec2 = Obj2.DisplaySettings.DisplayFormat.Source.Dec
for name, value in vars(dec1).items():
if name not in ('UniqueID', ...):
setattr(dec2, name, value)
</code></pre>
<p>它将复制任何未在不复制的名称元组中列出的名称。你知道吗</p>