gj2 python中一切皆对象

2.1 python中一切皆是对象

动态语言和静态语言的区别,Python的面向对象更彻底

同时动态语言,代码的灵活性高

没有编译(检查)的过程,错误只有在运行起来后才会发现

函数和类也是对象,属于python的一等公民

1. 赋值给一个变量

2. 可以添加到集合对象中

3. 可以作为参数传递给函数

4. 可以当做函数的返回值

def ask(name="lewen"):
    print(name)
class Persoon(object):
    def __init__(self):
        print("lewen")

obj_list = []
obj_list.append(ask)
obj_list.append(Persoon)
for item in obj_list:
    print(item())

lewen
None
lewen
<__main__.Persoon object at 0x0000029B7B3BBA20>

2.2 type、object和class的关系

type 的用法 1:生成一个类 2:反回一个对象是什么类型

>>> a = 1
>>> type(a)
<class ‘int‘>
>>> type(int)
<class ‘type‘>
>>> b = "abc"
>>> type(b)
<class ‘str‘>
>>> type(str)
<class ‘type‘>
>>> class Student:
...     pass
...
>>> stu = Student()
>>> type(stu)
<class ‘__main__.Student‘>
>>> type(Student)
<class ‘type‘>

type->int->1
type->class->obj

type是用来生成类的

>>> type(Student)
<class ‘type‘>
>>> Student.__bases__
(<class ‘object‘>,)
>>> class MyStudent(Student):
...     pass
...
>>> MyStudent.__bases__
(<class ‘__main__.Student‘>,)
>>> type.__bases__
(<class ‘object‘>,)
>>> type(object)
<class ‘type‘>
>>> object.__bases__
()
>>> type(type)
<class ‘type‘>

# object 是最项层基类# type 也是一个类,同时type也是一个对象

一切都继承自object,一切皆对象

type 自己是自己的实例(内部通过指针指向同一个内存块)

2.3 python中的常见内置类型

对象的三个特征:

    身份(对象在内存中的地址)

In [1]: a=1
In [2]: id(a)
Out[2]: 140714948027216
    类型(什么类型的对象)

    值

None(全局只有一个)

数值:int float complex bool

迭代类型

序列类型

    list
     bytes、bytearray、memoryview(二进制序列)
     range
     tuple
     str
     array

映射(dict)

集合:set ,frozenset

上下文管理类型(with)

其他:
   模块类型
   class和实例
   函数类型
   方法类型
   代码类型
   object对象
   type类型
   ellipsis类型
   notimplemented类型

原文地址:https://www.cnblogs.com/wenyule/p/10357632.html

时间: 2024-10-05 12:54:40

gj2 python中一切皆对象的相关文章

第2章 python中一切皆对象

python中一切皆对象 函数和类也是对象,属于python的一等公民 什么是一等公民 1.赋值给一个变量 2.可以添加到集合对象中 3.可以作为参数传递给函数 4.可以当作函数的返回值 def ask(name="bobby"): print(name) my_func = ask my_func("bobby") 运行结果 class Person: def __init__(self): print("bobby") my_class =

Python中万物皆对象?的理解

在很多地方都看到有过这样一句话,但是对象这个词的理解依然停留在谈朋友那个对象上-- <python中的对象的理解> python中一切皆为对象,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象, type标识对象的类型, value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的

python入门系列:Python中一切皆对象

引言 Java语言也是面向对象的语言,但是Python要更加彻底Python的面向对象特性,是它使用起来灵活的根本所在对象的特点 可以赋值给一个变量 函数也是对象 def test(name):print(name) my_func = test # 注意 只写函数名 和 函数名加括号 的区别my_func("MetaTian") # 打印:MetaTian可以添加到集合中去 def plus(a, b):print(a+b) def minus(a, b):print(a-b)fun

python中一切皆对象及__init__.py文件的使用

py一切皆对象,数据.函数.后续声明的类也是一个对象,而函数名称就是对象名称 函数名可直直接返回,这种叫做闭包 python中__init__.py文件的作用,__all__属性配置加载的白名单 原文地址:https://www.cnblogs.com/liuchunxiao83/p/12307626.html

081 python中一切皆对象

在python中,字典.列表.字符串.......都是对象 列表list举例 类实例化产生一个ls对象,是一个列表 ls = list([1,2,3]) print('ls:',ls) ls:[1,2,3,] 对象调用对象的绑定方法,修改对象自己 ls.append(4) print('ls:',ls) ls:[1,2,3,4] 原文地址:https://www.cnblogs.com/xichenHome/p/11414733.html

Python中通过函数对象创建全局变量

先看下面这段代码,显然无法work. 因为代码试图在TestVariableScope()中引用一个没有被定义的变量a.所以必须报错,如下图-1. 不过如果你将第2行代码注释掉.代码就能跑通了,如图-2. 问题1来了:TestVariableScope.a 不是也没有被定义吗,为什么可以work呢?解释如下:先看代码第8行,TestVariableScope.a在SetVariable方法中被定义了,SetVariable()又 在TestVariableScope()前被调用.所以TestVa

Python中的函数对象与闭包

函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 1 #foo.py 2 def callf(func): 3 return func() 使用上面的函数: 1 import foo 2 def helloworld(): 3 return 'Hello,World' 4 5 print foo.callf(helloworld) >>>‘Hello,World’ 2.把函数当做数据处理时

《python源码剖析》笔记 python中的List对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<PyObject *> typedef struct{ PyObject_VAR_HEAD //其中的ob_size表示实际被使用的内存的数量 PyObject **ob_item;//ob_item为指向元素列表的指针,实际上,Python中的list[0]就是ob_item[0] int allocat

《python源码剖析》笔记 python中的Dict对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyDictObject对象 -->  C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN) PyDictObject采用了hash表,时间复杂度是O(1) typedef struct{ Py_ssize_t me_hash; //me_key的hash值,避免每次查询都要重新计算一遍hash值 PyObject *me_key; PyObject *me_