python - 从 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
我对如何从类中调用函数感到困惑。
解决方案
var
是Class
变量,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
由于您之前缺少括号,它是实例方法本身,因此没有返回任何值。
推荐阅读
- python - 听按键需要很大的处理器速度
- flexbox - 弹性之间的差异:0 0 100% 和弹性:1 1 100%
- html - 图像旁边的时事通讯文本的模板代码 - 与某些电子邮件客户端的兼容性问题
- python-3.x - 热图:R/Python 中每列具有不同的颜色和缩放比例
- python - “'float' 对象不能解释为整数”moviepy 错误
- python - Python,搜索 < 和 > 中包含的字符串出现
- java - 使用 Eureka 向 WebFlux 注册微服务时遇到问题
- android - 如何设置弹出菜单的背景颜色?
- perl - 如何为 Synology DS218+ 交叉编译 Perl 模块(此处:Device::SerialPort)?
- c++ - 为什么我得到一个“没有构造函数实例匹配 MyArray::MyArray”参数列表?