【问题标题】:What is object in python package?python包中的对象是什么?
【发布时间】:2022-01-23 06:39:41
【问题描述】:

我正在学习 python,我遇到了 python 中的包。我创建了一个包含__init__.pyshipping.py 的目录。在shipping.py 代码是

def calc_shipping():
    print("calculating shipping cost")

我在这个目录之外创建了另一个名为app.py的python文件来导入这个包

from package import shipping
#package.shipping.calc_shipping()
shipping.calc_shipping()

我想知道,当我们调用shipping.calc_shipping() 时,它会打印消息。这里的运输是一个对象?如果是,那么我们应该有类,我们没有在包中声明任何类。有人请用这个概念澄清我

【问题讨论】:

    标签: python python-3.x object


    【解决方案1】:

    在 Python 中,一切都是对象。类、函数、方法,甚至模块、操作符等(语言标记和关键字除外,它们会像if-statementtry-except...这样的语句)

    Python 中的每个类都继承自一个基础 object 类。

    函数也不例外,它们来自function类型:

    def fn():
        pass
    
    print(type(fn))
    

    输出:

    <class 'function'>
    

    您无需在模块中定义它。 def 关键字将为您创建此类的实例。

    可通过types 模块获得:

    from types import FunctionType
    
    def fn():
        pass
    
    t = type(fn)
    print(t is FunctionType)  # True
    

    【讨论】:

    • 嗯,__add__ 并不是真正的运营商本身。顺便说一句,我也没有一个好的/完美的说法。我想到了“每个值都是一个对象”,但这只是解决了问题,因为我必须定义什么是“值”。
    • @KellyBundy 如果说每个 表达式 都是一个对象呢?表达式是可以评估的任何东西。任何可以传递给eval 的东西?也许
    • 嗨@SorousHBakhtiary,当我们在python中声明函数/方法时,我们实际上是在创建对象,我们不必指定它已经存在的类名,所以当我们在函数中使用def时正在创建对象,或者它正在从基类继承特征。我说的对吗?
    • @aniketpant 是的,当您使用def 关键字定义函数时,您正在创建一个对象,该对象是function 类型的实例。让我告诉你一些事情,type 类和object 类之间有一种特殊的关系,这种关系不能在纯 Python 中重现,所以我想我会让你感到困惑,因为你对此很抱歉。但是,类和类的实例都是对象。它们也是实例。是的,类本身就是实例(type 类型)。 Python 中的所有类(object 类本身除外)都继承自 object 类。
    • 如果说 expression 是错误的级别。 求值表达式的result是一个对象。不是表达式本身。除非你的意思是它是一个字符串对象:-)。但即使你说它是“......的结果”,这也只是转移了问题,然后不得不说出表达式是什么。
    猜你喜欢
    • 2019-10-12
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2015-03-11
    • 1970-01-01
    • 2017-11-15
    • 2020-10-02
    相关资源
    最近更新 更多