python中定义类带()和不带() 以及 调用类或函数 带()和不带() 的区别

本文探讨了Python中定义类时class A, class A(), class A(object)的区别,主要在于Python2和Python3的继承差异。在Python3中,三者均默认继承object。同时,文章解释了调用类和函数时带()和不带()的不同,类()用于创建实例,不带()则为赋值,函数带()调用执行结果,不带()调用函数本身。" 113214267,10536804,MySQL UDF执行Python脚本失败:sys_exec问题与解决方案,"['数据库管理', 'MySQL函数', '系统调用', '安全']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,定义类:class A, class A(), **class A(object)**的区别

python2中不默认继承;python3默认继承
所以 :
1, 在python2中class A, class A()是经典类(旧式类)没有继承功能;而class A(object)是新式类有继承功能
2, 在python3中,class A, class A(), class A(object)都一致默认继承object类

定义类后面没括号是自己写的类,有括号是继承的里面的父类

class A:
    def testA(self):
        print("class A")

# class A 在python3中可以被继承
class B(A):
    def testB(self):
        print("class B(A)")


b = B()
# 调用class A中的方法成功
b.testA()
b.testB()

输出

class A
class B(A)

2, 调用类和函数:a.类()a.类; a.函数()a.函数的区别

2.1 调用带()的类和不带()的类

类() : 创建实例/创建对象
类不带() : 可以理解为赋值

class A():
    def testA(self):
        print("testA")
        
# A()指向一个对象,用于创建实例或对象
print(f"id(A()) = {id(A())}, \tA() = {A()}")
# A指向一个内存地址, 表示赋值
print(f"id(A) = {id(A)}, \tA = {A}")

# 创建实例对象,用于调用类中的方法和对象
instance=A()
instance.testA()

输出

id(A()) = 2253745175128, 	A() = <__main__.A object at 0x0000020CBDAE3A58>
id(A) = 2253716457336, 	A = <class '__main__.A'>
testA---

关于赋值的进一步示例

# 关于赋值的进一步示例
a=3
print(f"id(a)={id(a)}, id(3)={id(3)}") # a和3的id地址一样

a=A # A的id赋值给a, a的id变成A,3的id不改变
print(f"id(a)={id(a)}, id(3)={id(3)}, id(A)={id(A)}")

2.2 带()的函数和不带()的函数

**- 函数不带括号时,调用的是函数本身,是整个函数体,是一个函数对象,不需要等待函数执行完成

  • 函数带括号时,调用的是函数的执行结果,需等待函数执行完毕的结**
def fonction():
    print("fonction---")
    lst=[1,2,3,4,5]
    s=sum(lst)
    return s  
    
# 调用一个函数对象fonction,不需要等函数执行完毕 
print(f"fonction={fonction}, id(fonction)={id(fonction)}")
print()
# 函数fonction()调用,需要等函数执行完毕
print(f"fonction()={fonction()}") 
print()
# 函数id
print(f"id(fonction())={id(fonction())}")

输出

#调用一个函数对象fonction
fonction=<function fonction at 0x0000020CBE120EA0>, id(fonction)=2253751717536
# 调用函数fonction()
fonction---
fonction()=15
# 调用函数id
fonction---
id(fonction())=140736018441488
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值