知行编程网知行编程网  2022-11-27 09:30 知行编程网 隐藏边栏  6 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于详解为什么Python中一切皆对象的相关知识,包括js一切皆对象,以及万物皆对象是什么意思这些编程知识,希望对大家有参考作用。

解释为什么 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_list = []
fun_list.append(plus)
fun_list.append(minus)
for item in fun_list:
    item(2, 1)
    
# result:
# 3
# 1

可以作为参数传递给函数

def plus(a, b):
    print(a+b)
    
def calculate(method, a, b):
    method(a, b)

calculate(plus, 1, 2)

# result:
# 3

可以当做函数的返回值

# 这也是装饰器的原理
def inner():
    print("MetaTian")
    
def deco():
    print("decorating...")
    return inner
    
my_func = deco()
my_func()

# result:
# decorating...
# MetaTian

对象的3个属性

身份:在内存中的地址是多少,可用id()函数查看

类型:是什么类型的对象,可用type()函数查看

值:对象中的内容是什么

type object和class的关系

type和class

关系:type -> class -> obj,obj是我们平时使用的对象,由class对象生成,可以是我们自定义的类,也可以是内置类。如前所述,一切都是对象,类也是以类型为模板生成的对象。

type()函数,当传入一个参数时,返回对象的类型。传入三个参数时,用来生成一个类。

print(type(1))
print(type(int))
# result:
# <class 'int'>
# <class 'type'>

class Person:
    pass

student = Person()
print(type(student))
print(type(Person))

# result:
# <class '__main__.Person'>
# <class 'type'>

print(type(type))
# result:
# <class 'type'>

type 是一个本身作为类生成的对象。如果你熟悉静态语言,这似乎不太容易理解,但对于动态语言来说,这很自然。

object

对象是最基本的基类。如果一个自己定义的类没有显式继承一个类,它会自动继承对象。上面讨论的是类和对象的关系,现在来讨论类和类的关系。

class Person:
  pass

class Student(Person):
  pass

print(Student.__bases__)
print(Person.__bases__)
print(int.__bases__)
print(object.__bases__)

# result:
# (<class '__main__.Person'>,)
# (<class 'object'>,)
# (<class 'object'>,)
# ()

print(type.__bases__)
print(type(object)
# result:
# (<class 'object'>,)
# <class 'type'>

type是一个继承object的类,object作为object是用type作为type生成的。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享