加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何访问Python超类的属性,例如通过__class __.__ dict__?

发布时间:2020-12-16 22:12:12 所属栏目:Python 来源:网络整理
导读:如何获取python类的所有属性名称,包括从超类继承的那些属性? class A(object): def getX(self): return "X" x = property(getX)a = A()a.x'X'class B(A): y = 10b = B()b.x'X'a.__class__.__dict__.items()[('__module__','__main__'),('getX', 如何访问via

如何获取python类的所有属性名称,包括从超类继承的那些属性?

class A(object):
  def getX(self):
    return "X"
  x = property(getX)

a = A()
a.x
'X'

class B(A):
  y = 10

b = B()
b.x
'X'

a.__class__.__dict__.items()
[('__module__','__main__'),('getX',

如何访问via b的属性?
需要:“给我一个包含b中所有属性名称的列表,包括那些从…继承的属性名称.”

>>> [q for q in a.__class__.__dict__.items() if type(q[1]) == property]
[('x',

我想从第一个(a)获得结果,当使用第二个(b)时,但是当前只能获得一个空列表.这也适用于继承自B的另一个C.

最佳答案
你可以使用dir():

for attr_name in dir(B):
    attr = getattr(B,attr_name)
    if isinstance(attr,property):
        print attr

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读