python 嵌套类_嵌套类的范围?

class Outer(object):

outer_var = 1

class Inner(object):

@property

def inner_var(self):

return Outer.outer_var

这与其他语言中的类似功能不太一样,并使用全局查找而不是限制对的访问outer_var。(如果更改名称Outer绑定到的对象,则此代码将在下次执行该对象时使用该对象。)

相反,如果您希望所有Inner对象都具有对的引用,Outer因为outer_var它实际上是实例属性:

class Outer(object):

def __init__(self):

self.outer_var = 1

def get_inner(self):

return self.Inner(self)

# "self.Inner" is because Inner is a class attribute of this class

# "Outer.Inner" would also work, or move Inner to global scope

# and then just use "Inner"

class Inner(object):

def __init__(self, outer):

self.outer = outer

@property

def inner_var(self):

return self.outer.outer_var

请注意,嵌套类在Python中并不常见,并且不会自动暗示类之间的任何特殊关系。您最好不要嵌套。(您仍然可以设置一个类属性上Outer到Inner,如果你想要的。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值