You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错AttributeError:类lyssna无属性s,如何跨类访问类属性s并拆分?

解决AttributeError:访问类内部变量的问题

嘿,这个错误其实很好理解——你现在的代码里,s是被定义在lyssna类的du方法内部的局部变量,它只在du方法执行时存在,不属于lyssna类本身,所以外部代码(比如Fixish里)直接用lyssna.s肯定找不到它呀!

给你几个可行的解决思路:

方法1:把s改成类属性

这是最简单的方式,直接把s定义在类的层级下,而不是方法内部:

class lyssna:
    s = '5-22'  # 这里直接把s设为类属性,整个类都能访问
    def du():
        # 保留你原来的方法逻辑即可
        pass

class Fixish():
    strt, stpp = lyssna.s.split('-')  # 现在就能正常访问拆分了

方法2:如果s必须在du方法中生成

如果s的内容是需要通过du方法的逻辑生成的,那可以把它绑定到类或者实例上:

子方法2.1:用实例属性

如果du是实例方法(建议给方法加self参数):

class lyssna:
    def du(self):
        self.s = '5-22'  # 把s设为实例属性

class Fixish():
    # 先创建lyssna的实例,调用du方法生成s
    lys_instance = lyssna()
    lys_instance.du()
    strt, stpp = lys_instance.s.split('-')

子方法2.2:用类方法绑定类属性

如果不需要实例化,想直接操作类本身,可以用@classmethod:

class lyssna:
    @classmethod
    def du(cls):
        cls.s = '5-22'  # 给类本身设置属性

# 先调用类方法生成s,再定义Fixish
lyssna.du()

class Fixish():
    strt, stpp = lyssna.s.split('-')

注意哦:如果是在Fixish类定义时就执行拆分操作,一定要确保lyssna.s已经被正确定义好了,不然还是会出现找不到属性的错误~

内容的提问来源于stack exchange,提问作者aleckzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:25:26