python - 如何从 pyhton 中的 __init__ 方法传递值,因为它不返回任何值
问题描述
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
bob = Person1('bob', 25)
__init__
不返回任何东西,那么在分配属性和空对象后,属性名称和年龄的值如何从__init__
函数传递给变量?bob
name
age
self
解决方案
bob = Person1('bob', 25)
真的相当于
rv = Person1.__new__(Person1, 'bob', 25)
if isinstance(rv, Person1):
rv.__init__('bob', 25)
bob = rv
调用类不会立即调用__init__
方法。首先调用类的__new__
方法以实际创建新实例,如果 __new__
返回作为第一个参数传递的类的实例,则 __init__
在返回值之前调用。
更进一步,这一切都封装在 中type.__call__
,所以真正的调用Person1('bob', 25)
类似于
bob = type.__call__(Person1, 'bob', 25) # Person1 is an instance of type
wheretype.__call__
是调用Person1.__new__
and,如果合适的话Person.__init__
,并返回结果对象以将其分配给bob
。
推荐阅读
- linux - 在 Unix/Linux 中将特定文件从一个文件夹复制到另一个文件夹
- shiny - 如何在 R-Markdown 中格式化响应式文本输出?
- wordpress - 在 Wordpress 中注销后如何阻止用户返回管理页面?
- google-cloud-kms - 从控制台编辑或删除密钥环
- php - 简码返回错误的 URL - Wordpress
- python - 如何在 Centos5 上安装最新版本的 cmake?
- python - python selenium的火灾事件
- c# - Process.GetProcesses 和 IsWow64Process 不会返回所有正在运行的进程
- python - 如何将列表分解为单独的行
- postgresql - 数据从 Kafka 流式传输到 Postgres,几秒钟后丢失