首页 Python基础入门视频教程 Python实例方法、类方法@classmethod、静态方法@staticmethod访问权限对比
pay pay

Python实例方法、类方法@classmethod、静态方法@staticmethod访问权限对比

日期: 二月 14, 2023, 8:36 a.m.
阅读: 374
作者: Python自学网-村长

摘要: Python实例方法、类方法@classmethod、静态方法@staticmethod访问权限对比。

00:00 / 12:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
面向对象
    1. 第1课:Python面向对象程序设计
      12分钟
    2. 第2课:类属性和对象属性
      12分钟
    3. 第3课:类属性和对象属性操作本质对比
      12分钟
    4. 第4课:类属性和对象属的区别和使用对比
      12分钟
    5. 第5课:Python类方法的创建
      12分钟
    6. 第6课:实例方法,类方法和静态方法
      12分钟
    7. 第7课:三种方法访问权限对比
      12分钟
    8. 第8课:面向对象基础-元类
      12分钟
    9. 第9课:类属性,私有化属性,受保护属性的访问区别
      12分钟
    10. 第10课:面向对象-属性-私有化属性
      12分钟
    11. 第11课:面向对象-属性-只读属性
      12分钟
    12. 第12课:property操作只读属性
      12分钟
    13. 第13课:属性安全补充
      12分钟
    14. 第14课:内置属性
      12分钟
    15. 第15课:类属性,实例属性,初始化属性
      12分钟
    16. 第16课:面向对象-方法-方法回顾
      12分钟
    17. 第17课:内置特殊方法-对象信息重写
      12分钟
    18. 第18课:内置特殊方法-调用
      12分钟
    19. 第19课:内置特殊方法-索引操作
      12分钟
    20. 第20课:内置特殊方法-切片
      12分钟
    21. 第21课:内置特殊方法-对象比较
      12分钟
    22. 第22课:内置特殊方法-上下文环境的布尔值
      12分钟
    23. 第23课:内置特殊方法-迭代和遍历
      12分钟
    24. 第24课:内置特殊方法-描述器
      12分钟
    25. 第25课:内置特殊方法-装饰器
      12分钟
    26. 第26课:内置特殊方法-对象生命周期
      12分钟
    27. 第27课:内置特殊方法-面向对象小结案例
      12分钟
    28. 第28课:三大特性-继承和继承关系
      12分钟
    29. 第29课:三大特性-资源的继承和使用
      12分钟
    30. 第30课:三大特性-资源的覆盖或累加
      12分钟
    31. 第31课:三大特性-多态
      12分钟
    32. 第32课:面向对象-抽象类
      12分钟

面向对象基础-方法的使用详解

class Person:
    name = 'jerry'
    def eat(self, food):
        print('他在吃' + food, self)

    @classmethod
    def run(cls):
        print('小明会跑步', cls)

    @staticmethod
    def haha():
        print('小明在大笑')
# 1.实例方法
p = Person()
p.eat('水果')  # 这里使用p来调用实例方法,所以解释器会把p当做方法中的self直接传递进去,我们只要写另外的参数就可以
print(p)  # 这里的p和self的内存地址一样
Person.eat('aaa', '西瓜')  # 也可以使用类来调用内部的实例方法,但是要传入两个参数,第一个是对象,不推荐

# 2.类方法:可以通过类或者实例来调用
Person.run()
p.run()  # 这里是把实例忽略,但是向上溯源到实例所在的类,并把类作为参数穿个cls
# 如果使用子类来调用类方法,则会把子类传递给cls,后面继承中详解

# 3.静态方法
Person.haha()  # 使用类调用静态方法
p.haha()  # 使用实例调用静态方法

# 4.三种方法的应用场景:
# python中万物皆对象,拿字符串(对象)举例
# str1 = 'Python is a easy Programming Language'
# print(str1.find('easy'))
# print(str1.count('o'))
# 上面两种方法属于实例方法,我们只要传入一个参数就可以了,str1作为实例会自动帮我们传入到self上
# 5.使用三种方法访问类属性和实例属性
class Person:
    name = 'jerry'
    def eat(self):
        print('他在吃', self)
        print(self.name)
        print(self.age)

    @classmethod
    def run(cls):
        print('小明会跑步', cls)
        print(cls.name)
        print(cls.age)

    @staticmethod
    def haha():
        print('小明在大笑')
        print(Person.name)
        print(Person.age)
p = Person()
p.age = 22  # 增加一个实例属性
# 通过三个方法来访问实例属性age和类属性name
# 实例属性通过self可以拿到实例对象,所以实例属性和类属性都能通过self访问到
print(Person.eat(p))  # 能访问到实例属性age和类属性name
print(p.eat())  # 能访问到实例属性age和类属性name

# 类方法中拿不到外界的实例,所以只能访问类属性
# print(Person.run())  # 能访问到类属性name,不能实例属性age
# print(p.run())  # 能访问到类属性name,不能实例属性age

# 静态方法中拿不到实例只能通过类直接调用类属性
# print(Person.haha())  # 能访问到类属性name,不能实例属性age
# print(p.haha())  # 能访问到类属性name,不能实例属性age

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部