在Python中调用类函数后获取AttributeError

2024-09-28 03:15:53 发布

您现在位置:Python中文网/ 问答频道 /正文

用Python编写的非常简单的类(源代码如下)。在

在构造obj1 = myClass(12)并调用类函数obj1.printInfo()之后,我得到一个错误-AttributeError: type object 'myClass' has no attribute 'arg1'问题的根源是什么??在

class myClass(object):

    def __init__(self, arg1, arg2 = 0):
        self.arg1 = arg1
        self.arg2 = arg2

    def printInfo (self):
        print myClass.arg1, myClass.arg2


obj1 = myClass(12)
obj1.printInfo()

谢谢!在


Tags: 函数noselfobject源代码deftype错误
3条回答

您要使用将printInfo(self)的主体替换为:

def printInfo(self):
    print self.arg1, self.arg2

self在这里的用法不是指定作用域,因为它有时在Java中使用(我的班。这个)或者用PHP。在此函数中,self实际上是包含arg1和arg2的对象。Python以这种方式非常明确。在前面的方法中,您为self分配了arg1和arg2,因此应该希望arg1和arg2脱离self。在

关于第二个问题,如果您想要一个“类”函数(即静态方法),那么您仍然需要对obj1的引用来访问它的属性。例如:

^{pr2}$

如果有机会,请务必阅读PEP8:)

脑屁,是吗?将myClass.arg1切换到self.arg1

def printInfo (self):
    print self.arg1, self.arg2

你可以这样做:

def f1(arg1, arg2):
    print arg1, arg2

class myClass(object):
    def __init__(self, arg1, arg2 = 0):
        self.arg1 = arg1
        self.arg2 = arg2
    def printInfo (self):
        f1(self.arg1, self.arg2)

obj1 = myClass(12)
obj1.printInfo()

相关问题 更多 >

    热门问题