美文网首页Python全栈学习之路Python基础教程python入门基础学习
Python中的类对象、类属性、类方法与实例对象、实例属性、实例

Python中的类对象、类属性、类方法与实例对象、实例属性、实例

作者: 隰有荷 | 来源:发表于2018-11-18 23:11 被阅读9次
类对象:类名所对应的内存空间
类属性:所有的类对象和实例对象都可以直接访问
类方法:第一个形参是类对象cls,其上方有@classmethod,可获取或修改类属性的数据
实例对象:变量名所对应的内存空间
实例属性:只属于某一实例对象,其他的实例对象 / 类对象无法直接访问该实例对象的属性值
实例方法:可通过该方法获取或修改实例属性的数据

下面通过一段代码展示这些内容的相关用法:

'''
类对象、属性、方法
实例对象、属性、方法
'''
class Dog(object):

    type = '狗'  # 类属性【可被类对象及实例对象访问】

    def __init__(self, name):  
        self.name = name  # 实例属性

    @classmethod 
    def classM(cls, *args):   # 类方法【可被类对象及实例对象访问并传参修改类属性】
        # cls.type = str(args)
        print('类方法:%s' % cls.type)  # 可修改类属性  --> 类方法:猫

    def objectM(self, *args):  # 实例方法, 【可被类对象及实例对象访问并传参修改实例属性】
        # self.name = args[2]
        print('实例方法:' + self.name)

# 实例对象
a = Dog('旺财')  

# 实例对象和类对象都能直接调用类属性
print(a.type)  # --> 狗
print(Dog.type)  # --> 狗

# 类对象可以直接修改类属性【但不能直接修改实例属性】
Dog.type = '猫'
print(Dog.type)  # --> 猫
print(a.type)  # --> 猫

# 实例对象可以直接修改实例属性【但不能直接修改类属性】
a.name = '新旺财'
print(a.name)  # --> 新旺财

# 实例对象和类对象都能直接调用类方法【都可通过对类方法传参,以实现修改类属性】
a.classM()  # 结果见该方法
Dog.classM()  # 结果见该方法

# 实例对象和类对象都能直接调用实例方法【都可通过对实例方法传参,以实现修改实例属性】
a.objectM()  # --> 实例方法:新旺财
Dog.objectM(Dog('小虎'))  # Dog是类对象,Dog()是实例对象  --> 实例方法:小虎

# 实例对象直接"赋值修改"类属性实际是相当于创建了一个与类属性同名的实例属性,实例对象无法对类属性赋值修改;【除非通过对类方法传参可实现修改类属性】
a.type = '大狗'  # 即相当于a多了个type属性,并不影响Dog中的type
print(Dog.type)  # 猫
print(a.type)  # 大狗

print(Dog)  # --> <class '__main__.Dog'> 【说明是类对象】
print(Dog('狗子'))  # --> <__main__.Dog object at 0x0000020792FB0C50> 【说明是实例对象】
print(a)  # --> <__main__.Dog object at 0x0000020792FB0748> 【说明是实例对象】

结束。

相关文章

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • Python的类属性,实例属性,类方法,实例方法,静态方法

    什么是类对象,什么是实例对象类对象: 类名就是类对象实例对象:类创建的对象 类属性,实例属性类属性: 就是类所拥有...

  • TypeScript:属性装饰器

    回顾类的属性 回顾面向对象,类中的属性分为实例属性和静态属性,实例属性属于实例化后的对象,静态属性属于类本身 在类...

  • Python面向对象编程

    类相关知识 对象相关知识 类属性增删改查 实例属性增删改查 对象与实例属性 静态属性 类方法 静态方法 组合 继承...

  • python —— 面向对象

    概念 特性 类与对象的方法和属性 实例方法:对象拥有的方法,把函数(self)封装到类里面实例属性:对象拥有的属...

  • 面向对象两三事

    实例和类的区别 类:a. 变量: 所有实例共享b. 对象: 属性引用类.对象、实例化 对象=类()c. 绑定属性:...

  • 面向对象编程

    主要包括: 基本概念 属性私有化(类的封装) 实例属性与类属性 静态方法、类方法、与实例方法 继承与多态 获取对象...

  • python中实例属性和类属性

    一、 什么是实例和类属性 实例属性:声明在方法中,通过self声明的属性,是实例对象所特有的属性,而实例对象是类创...

  • 类,类对象和实例对象

    Python 的类定义写完之后就成了一个类对象,而引用这个类对象的就是实例对象。 类中定义的属性和方法都是静态属性...

  • Python魔法方法-__dict__

    __dict__ 类或对象中的所有属性类的实例属性属于对象;类中的类属性和方法等属于类,即:

网友评论

    本文标题:Python中的类对象、类属性、类方法与实例对象、实例属性、实例

    本文链接:https://www.haomeiwen.com/subject/vfynfqtx.html