Python类中的方法

本文深入解析Python中的三种方法:普通方法、类方法和静态方法。详细介绍了它们的定义、调用方式及适用场景,帮助读者理解如何在实际编程中合理运用。

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

1、普通方法: 

class MyClass:
    """A simple example class"""
    i = 12345

    def f1(c):
        return str(c) + 'hello world'
    
    def f2():
        return 'hehe'
    
m = MyClass()

print(m.f1()) #输出 <__main__.MyClass object at 0x07698270>hello world

print(m.f2()) #报错  f2() takes 0 positional arguments but 1 was given

print(MyClass.f1()) #报错  f1() missing 1 required positional argument: 'c'

print(MyClass.f2()) #输出hehe

类中定义的普通方法,

如果带了一个或多个参数,不管第一个参数是否叫self,都会被作为实例本身的引用,所以只能用实例名加.的方式访问;

如果没有带参数,只能使用类名加.的方式访问。

2、classmethod修饰的方法

class MyClass:
    """A simple example class"""
    i = 12345
 
    @classmethod
    def f1(c):
        return str(c) + '\thello world'
    
    @classmethod
    def f2():
        return 'hehe'

print(MyClass.f1())#可以用类名加.的方式调用

m = MyClass()
print(m.f1())#也可以用实例名加.的方式调用

print(MyClass.f2())#报错 TypeError: f2() takes 0 positional arguments but 1 was given

m = MyClass()
print(m.f2())#报错 TypeError: f2() takes 0 positional arguments but 1 was given

    加了@classmethod的方法,至少要有一个参数,不然没有意义,被调用时会报错;
    带一个或多个参数时,第一个参数会作为类本身的引用,所以能用实例名加.的方式调用,也能使用类名加.的方式调用。

3、staticmethod修饰的方法

class MyClass:
    """A simple example class"""
    i = 12345

    @staticmethod
    def f1(c):
        return str(c) + '\thello world'
    
    @staticmethod
    def f2():
        return 'hehe'
    
print(MyClass.f1(2))#可以用类名加.的方式调用

m = MyClass()
print(m.f1('tom'))#也可以用实例名加.的方式调用



print(MyClass.f2())#可以用类名加.的方式调用

m = MyClass()
print(m.f2())#也可以用实例名加.的方式调用

     #加了@staticmethod的方法,跟最普通的类外函数一样,参数也是作为普通参数看待,不代表类也不代表实例。所以能用实例名加.的方式调用,也能使用类名加.的方式调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值