关于python的类方法、实例方法和静态方法区别

python的类方法需要在方法前面加装饰器:@classmethod ,静态方法是在方法前面加装饰器:@staticmethod。

类方法、类属性是属于类自身,属于类自身的命名空间,和实例方法、实例属性不在一个命名空间下。

实例对象和类都可以直接调用类方法、实例方法和静态方法,区别在于:在类方法和静态方法内部不能调用实例属性。

复制代码
class Base:
    def __init__(self):
        print "base begin..."
    def prints(self):
        print "print base..."

class Base1:
    def __init__(self):
        print "base1 begin..."
    def printss(self):
        print "print base1..."

class Base2(Base1,Base):
    names = 'li'
    def __init__(self,name):
        self.name = name
    def prints(self):
        print "print objectmethod..."+self.name
    @staticmethod
    def printStatic():
        print "print staticmethod..."
    @classmethod
    def printClass(cls):
        print "print classmethod"+cls.names


b = Base2('king')
b.prints()
b.printClass()
b.printStatic()
print b.names
Base2('jim').printStatic()
Base2('jim').printClass()
Base2('jim').prints()
复制代码

 

posted @   zhou_blog  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
· 为什么构造函数需要尽可能的简单
阅读排行:
· 短信接口被刷爆:我用Nginx临时止血
· Google发布A2A开源协议:“MCP+A2A”成未来标配?
· C# 多项目打包时如何将项目引用转为包依赖
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
· 如果单表数据量大,只能考虑分库分表吗?
点击右上角即可分享
微信分享提示