Python类的实例化时,类名后不加括号是什么意思?

HowieZhao 2017-04-15 11:00:05
比如下面这段代码:

# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer

FTPHandler后不是应该加括号吗?
...全文
3280 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wei_feng__ 2020-03-01
  • 打赏
  • 举报
回复
加括号的是实例化了,init 魔法方法会监听实例化后调用,不加括号 ,就是调用的类本身。
abcdguoyifan168 2019-12-05
  • 打赏
  • 举报
回复
阿凯99 2018-07-16
  • 打赏
  • 举报
回复
简单点说,不加括号就是赋值。
1楼的例子中,调用x和调用clsTest是一样的。
恰饭能工巧酱 2018-07-15
  • 打赏
  • 举报
回复
python 一切皆对象,类本身也是对象,不加括号就是对象引用传递
weixin_41004677 2018-04-19
  • 打赏
  • 举报
回复
我个人觉得,python是一个引用机制的,不加括号的相当于是一个变量,指向类所在的空间,有括号是才可以执行
欢乐的小猪 2018-04-19
  • 打赏
  • 举报
回复
new_come1 2018-04-19
  • 打赏
  • 举报
回复
你可以打印出两个实例化的类型,不加括号相当于设置别名,其类型应该是<type 'classobj'>;而加括号才是正确的实例化方法,打印类型应该为<type 'instance'>
大个啊 2018-04-19
  • 打赏
  • 举报
回复
无法编辑删除上一个回帖。。。。。 ----------

class clsTest():
    y=''
    def __init__(self):
        self.y='你'
>>> b = clsTest >>> type(b) <class 'type'> >>> c = clsTest() >>> type(c) <class '__main__.clsTest'> 上述代码中, b 是类。 b.authorizer = authorizer 实际上是给类的 attr 赋值。
大个啊 2018-04-19
  • 打赏
  • 举报
回复

class clsTest():
    y=''
    def __init__(self):
        self.y='你'
>>> type(b) <class 'type'> >>> c = clsTest() >>> type(c) <class '__main__.clsTest'> 上述代码中, b 是类。 b.authorizer = authorizer 实际上是给类的 attr 赋值。
qq_35814367 2017-05-04
  • 打赏
  • 举报
回复
引用 2 楼 HowieZhao 的回复:
[quote=引用 1 楼 chuifengde 的回复:] 举个例子你看看哪个是实例化:
class clsTest():
    y=''
    def __init__(self):
        self.y='你'

x=clsTest
print(x.y)

x=clsTest()
print(x.y)
加括号的是类的实例化,那不加括号的究竟是什么呢,就像我提出的那段代码,不懂什么意思[/quote] 说白了 加括号就是调用init函数 不加括号就是不调用init函数
ckc 2017-04-18
  • 打赏
  • 举报
回复
不加括号就不是启动实例,这个应该和设置一个别名是一样的 handler.authorizer实际上就是FTPHandler类的共享成员
HowieZhao 2017-04-17
  • 打赏
  • 举报
回复
引用 1 楼 chuifengde 的回复:
举个例子你看看哪个是实例化:
class clsTest():
    y=''
    def __init__(self):
        self.y='你'

x=clsTest
print(x.y)

x=clsTest()
print(x.y)
加括号的是类的实例化,那不加括号的究竟是什么呢,就像我提出的那段代码,不懂什么意思
chuifengde 2017-04-17
  • 打赏
  • 举报
回复
举个例子你看看哪个是实例化:
class clsTest():
    y=''
    def __init__(self):
        self.y='你'

x=clsTest
print(x.y)

x=clsTest()
print(x.y)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧