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

liftword5个月前 (01-07)技术文章50

类对象:类名所对应的内存空间

类属性:所有的类对象和实例对象都可以直接访问

类方法:第一个形参是类对象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> 【说明是实例对象】

结束。

相关文章

python创建类的方法实例

创建一个学生类:数据:(姓名,姓别,年龄 ,分数)形为:打印信息'''class Studons:def __init__(self,name,xibie,nianling,f...

一、Python 中类的定义、创建、使用

Python 界的领袖 Tim Peters 说的:元类就是深度的魔法,99% 的用户应该根本不必为此操心。如果你想搞清楚究竟是否需要用到元类,那么你就不需要它。那些实际用到元类的人都非常清楚地知道他...

python入门040:根据类创建实例

一、创建实例1、类的实例化定义的类只有进行实例化,也就是使用该类创建实例(对象)之后,才能得到使用。创建类实例(对象)的过程,又称为类的实例化。其语法格式为:类名(参数)在上面的程序中,我们首先创建了...

python面向对象-类的定义

类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体在程序中:务必保证先定义类,后产生对象这与函数的使用是类似的,先定义函数,后调用函数,类...

Python类的定义、封装、继承和多态

# 定义一个基础类 Animal,用于表示动物 class Animal: # 构造函数,用于初始化动物的名称和年龄 def __init__(self, name, age):...