Skip to content

Commit 45de931

Browse files
authored
[cherry-pick]fix hasattr(paddle.fluid.ir.PassDesc.OP, '__name__') error (#36294)
对于__getattr__重载后不满足条件的参数,全部抛出AttributeError异常,达到与未重载版本一致。 (cherry picked from PR #36229)
1 parent 70e6784 commit 45de931

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

python/paddle/fluid/ir.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,6 @@ def __init__(self, type=None):
230230
self._type = type
231231

232232
def __getattr__(self, name):
233-
if self._type is not None:
234-
raise AttributeError(
235-
"type object 'OpHelper' has no attribute '{}'".format(name))
236233
op = PassDesc.OpHelper(name)
237234
op.Init()
238235
return op
@@ -261,7 +258,12 @@ def Init(self):
261258
self._op_idx = len(block.ops)
262259
self._op_desc = block.desc.append_op()
263260
self._op_desc.set_type(self._type)
264-
self._op_proto = OpProtoHolder.instance().get_op_proto(self._type)
261+
self._op_proto = OpProtoHolder.instance().op_proto_map.get(
262+
self._type)
263+
if self._op_proto is None:
264+
raise AttributeError(
265+
"type object 'OpHelper' has no attribute '{}'".format(
266+
self._type))
265267
block.ops.append(self)
266268

267269
def Attr(self, name):

python/paddle/fluid/tests/unittests/ir/test_ir_generate_pass.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ def convert_ops_to_op_dicts(self, ops):
123123
op_dicts[op.type] = [op]
124124
return op_dicts
125125

126+
def test_has_attr(self):
127+
self.assertFalse(hasattr(ir.PassDesc.OP, '__name__'))
128+
126129
def test_generate_fc_fuse(self):
127130
def _check_fc_fuse_pass(pass_desc, with_relu):
128131
pattern_op_dicts = self.convert_ops_to_op_dicts(

0 commit comments

Comments
 (0)