python——动态的增加实例方法、类方法、静态方法

初始类为

import types

class Person:

    def __init__(self,name,age):
        self.name=name
        self.age=age

if __name__ == '__main__':
    p=Person('kb',18)

1、动态增加一个类属性

Person.sex='女'

2、类不能调用实例对象

print(Person.age)

报错:
AttributeError: type object ‘Person’ has no attribute ‘age’

3、对象调用类属性

print(p.sex)

4、动态增加实例方法

    def run(self,work):
        print(f'实例方法:{self.name}正在{work}')
    p.run=types.MethodType(run,p)
    p.run('学习')

5、给Person类增加一个类方法

@classmethod
    def class_run(cls,work):
        print(f'类方法:正在{work}')
    Person.class_run=class_run
    p.class_run('学习')

6、给Person类增加一个静态方法

@staticmethod
    def static_run(work):
        print(f'静态方法:正在{work}')
    Person.static_run=static_run
    p.static_run('学习')
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,方法可以分为实例方法、类方法静态方法。 1. 实例方法 实例方法是最常用的方法类型。它们是在类的内部定义的,用于操作实例属性,并且需要通过实例调用。在实例方法中,第一个参数必须是self,它代表调用该方法实例本身。示例: ```python class MyClass: def instance_method(self): print("This is an instance method.") obj = MyClass() obj.instance_method() # 调用实例方法 ``` 2. 类方法方法是在类级别上定义的方法,用于操作类属性,而不是实例属性。在类方法中,第一个参数必须是cls,它代表该类本身。类方法可以通过类调用或者实例调用。示例: ```python class MyClass: count = 0 # 类属性 @classmethod def class_method(cls): cls.count += 1 print("This is a class method.") print("The count is: ", cls.count) MyClass.class_method() # 调用类方法 obj = MyClass() obj.class_method() # 也可以通过实例调用 ``` 3. 静态方法 静态方法是在类的命名空间中定义的函数,它们与类没有直接关系,也不需要访问实例或类属性。静态方法可以通过类调用或者实例调用。示例: ```python class MyClass: @staticmethod def static_method(): print("This is a static method.") MyClass.static_method() # 调用静态方法 obj = MyClass() obj.static_method() # 也可以通过实例调用 ``` 总结:实例方法、类方法静态方法都是在类的命名空间中定义的函数,它们的区别在于参数和访问的属性不同。实例方法需要访问实例属性,类方法需要访问类属性,静态方法则不需要访问属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值