(含代码演示)python中类(class)的定义及PyCharm中提示:method ‘***‘ may be static

本文介绍了Python类的属性和方法,解析了在类方法中出现'方法可能为静态'message的原因,即方法未使用类属性。提供了两种解决方法:在方法中使用属性或使用@staticmethod装饰器声明静态方法。通过示例代码详细展示了如何应用这些概念,并给出了实际的人类跑步速度计算例子。最后总结了类定义的关键点和静态方法的处理方式。

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

大家在进行Python程序编写的的时候经常会遇到这个问题:

在波浪线的地方提示:

那么这是什么原因呢?这是因为我们在类中所声明的方法没有使用类中的属性。

一、首先我们介绍一下python中的类

我们知道,在类的定义中,包含两部分:属性和方法(或功能)

如图所示,在类的定义中,定义了两个属性:first_attribute  和  second_attribute;定义了一个方法:name_method。包含了这两个部分,就可以作为一个类使用。接下来在主函数里面构建一个

对象:

A_object = NameOfClass()

这时,这个对象A_object就拥有了这个类的属性和方法。

举个例子:把类看作“人”,人的属性有:身高,体重,人的方法(功能)有跑步,跳高。构建一个对象:张三,则张三也就有了身高体重的属性和跑步,跳高的功能。

代码中

A_object.first_attribute

表示A_object调用了第一个属性,调用方法就是:'点',此时就将对象的属性调用了

二、再介绍method '***' may be static的原因及解决方法一

当方法中没有使用类的属性,这时方法定义时就会出现如上情况

比如上例,跑步依赖于体重,这样在编写方法(功能)的时候,就需要在跑步(方法)将体重(属性)加进去,如图,在构建name_method的方法函数中,用到了属性中的first_attribute 

但是当没有使用属性的时候,就是静态的,即认为跑步和体重无关。

上述也是去掉波浪线的方法一

三、方法二

当我的方法中是在不需要使用属性是,这时怎么办呢,也有办法,就是提前申明这个方法是静态的

具体步骤,将def name_method(self)改为

    @staticmethod
    def name_method():

四、示例代码

代码一、定义类的框架

# 类的定义的框架
class NameOfClass:
    def __init__(self):
        self.first_attribute = 1  # 第一个属性
        self.second_attribute = 2  # 第二个属性

    def name_method(self, *args):
        print(self.first_attribute)
        print('这是第一个方法')


if __name__ == "__main__":
    A_object = NameOfClass()  # 构建一个对象
    print(A_object.first_attribute)

代码二、申明

class NameOfClass:
    def __init__(self):
        self.first_attribute = 1  # 第一个属性
        self.second_attribute = 2  # 第二个属性

    @staticmethod
    def name_method():
        print('这是第一个方法')


if __name__ == "__main__":
    A_object = NameOfClass()  # 构建一个对象
    print(A_object.first_attribute)

代码三、具体例子

# 具体示例
class Person:
    def __init__(self, height, weight):
        self.height = height  # 第一个属性
        self.weight = weight  # 第二个属性

    def run(self, age):
        velocity = 100 + 1/self.weight + 1/age  # 100m/s是基准速度,体重越大,速度越慢
        return velocity


if __name__ == "__main__":
    zhangsan = Person(170, 75)  # 构建一个对象
    v_of_zhangsan = zhangsan.run(25)
    print(v_of_zhangsan)

输出:
100.05333333333334

五、总结

1、类的定义:属性&方法

2、解决方法:(1)提前用@staticmethod申明

                       (2)在方法中使用属性

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值