首页 > 解决方案 > 从 python 类调用函数期间的语法混淆

问题描述

抱歉,这是我第一次提问,格式可能有误。我不确定在不创建类实例的情况下从类调用函数的语法。对于代码:

class A_Class:
    var = 10

    def __init__(self):
         self.num = 12

    def print_12(self):
         return 12

我怎么能打电话

      print(A_Class.var)

并让控制台打印出值 10,但如果我要调用

      print(A_Class.num)

然后我得到错误:

       AttributeError: type object 'A_Class' has no attribute 'num'

如果我尝试打电话

       print(A_Class.print_12)

然后控制台打印:

       <function A_Class.print_12 at 0x039966F0>

而不是值 12

我对如何从类中调用函数感到困惑。

标签: python

解决方案


varClass变量,whilenum是实例变量,例如:

class A_Class:
    var = 10

    def __init__(self):
         self.num = 12
    def print_12(self):
         return 12

a = A_Class()

作为一个类变量,它属于类,你可以调用它。

print(A_Class.var)
>> 10

作为实例变量,您必须先实例化它才能访问值,这就是为什么self(self没有特殊含义并且可以是任何东西,但始终是实例方法的第一个参数) 被使用并在特殊__init__方法中初始化。

a = A_Class()
print(a.num)
>> 12

最后,您要打印返回值,因此必须调用它,例如:

var =  a.print_12()
print(var)
>> 12

由于您之前缺少括号,它是实例方法本身,因此没有返回任何值。


推荐阅读