python类对象属性查找原理

class Foo(object):
    def __init__(self):
        # 这是一个对象属性
        self.obj_pro = 12

    # 这是一类属性
    c_pro = 11

    # 这是一个静态方法
    @classmethod
    def c_method(self):
        print(‘c_method‘)

if __name__ == ‘__main__‘:
    f = Foo()
    """
     如何查找对象属性?
     就是在对象的__dict__字典去找,对象__dict__找不到,再去类__dict__里面找
    """
    print(f.__dict__)  # {‘obj_pro‘: 12}

    """
        类属性是在类的__dict__字典里面找的
    """
    print(Foo.__dict__)   

如果还是找不到,就会调用getattr(self,item)魔法方法、

原文地址:https://www.cnblogs.com/z-qinfeng/p/11986564.html

时间: 2024-10-01 07:02:22

python类对象属性查找原理的相关文章

EL表达式获取对象属性的原理

EL表达式获取对象属性的原理是这样的:以表达式${user.name}为例EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值. 所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法. 其实你要了解EL表达式的运行原理,它其实后台也对应的Java代码,它会先将你EL表达式中的对象属性的首字符大写,拼成getXX()方法,然后利用

Method Resolve Order (MRO) - 类对象属性的解析顺序

Method Resolve Order (MRO) - 类对象属性的解析顺序 Python 支持多重继承, 此时就需要解决按照何种顺序来解析属性的问题.类的继承关系在一个特殊的类属性中指定(__mro__).这个属性的作用是按照序列出类及其超类, python 会按照这个顺利搜索方法.任何实现了多重继承的语言都要处理潜在的命名冲突问题,这种冲突由不相关的父类实现的同名方法所引起的,称为'菱形问题'. 举个例子, 1 class A(list): 2 def disp(self): 3 prin

小猿圈之Python 类的属性再解

python中万物皆对象,可见面向对象在python开发过程中是重中之重,小猿圈老师从基础详解面向对象,今天一起看一下python类的属性. 首先要知道python类的属性分为数据属性和实例属性,下面以具体实例来学习类的属性. #类的属性 class A(): #定义一个类的属性(数据属性),类似于c++中的静态变量 num=0 def __init__(self): #实例对象属性定义赋值 self.name = "hha" def add(self): #类属性的调用 A.num

079 类的属性查找

类的属性查找 先从对象自己的名称空间找,没有则取类里找,如果类里也没有则程序报错 class Student1: # 定义类的相同属性 school = 'xiwangzhongxue' count = 0 aaa = 10 # 定义类的相同方法 # 定义类的属性方法 def __init__(self,name,age): self.name = name self.age = age Student.count += 1 self.aaa = 1 def choice(self): prin

第十一章、对象属性查找顺序与属性和方法

目录 第十一章.对象属性查找顺序与属性和方法 一.属性查找 二.对象赋属性 三.绑定方法 第十一章.对象属性查找顺序与属性和方法 一.属性查找 对象自身-->子类-->父类(多继承)-->报错 二.对象赋属性 方式一:给自己对象加一个属性 student=Student() student.name='nick' 方拾二:__init__()方法内赋值 方式三:对象.方法 change_name(self,name) self.name='nick' 三.绑定方法 定义在类内部的方法 类

##oc在类别里给类加属性以及原理

oc在类别里给类加属性以及原理 如何在类别里给类加属性呢,有鸭子模样的我们就认为他是鸭子了. @interface NSObject (XY) @property (nonatomic, strong) id tempObject; @end @implementation NSObject (XY) @dynamic tempObject; - (id)tempObject - { id object = objc_getAssociatedObject(self, NSObject_key_

python类对象、类属性

一."class" 类名:实际上,当解释器执行class语句时,就会创建一个类对象. 二.类属性: 类属性是从属于类对象的属性,也称为"类变量".由于,类属性从属于类对象,可以被所有实例对象共享. class   类名: 类变量名 = 初始值 在类中或者类的外面,我们可以通过:"类名.类变量" 来读写. 原文地址:https://www.cnblogs.com/yingxiongguixing/p/12186077.html

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

python—类的属性和方法总结

一.类的属性总结(类的属性定义在方法外,对象的属性定义在方法内) 理解: 类的(静态)属性:(人类的五官,理解为变量) 类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类本身) 对象:类的实例化,之后才能有属性和方法 1)类的属性,也是公有属性:类的私有属性 2)对象的公有属性:对象的私有属性 3)函数局部变量:全局变量 4)内置属性 #!/usr/bin/env python #encoding:utf-8 var6 = "全局变量var6" class