python - 取消包装或取消继承对象
问题描述
我无权访问的代码块返回一个我想要恢复的“包装”或更确切地说从基类继承的对象。包装是有害的,我想摆脱它。有没有办法向上转换到父类?解开对象?剥夺它?
我准备了一个简单的例子:是否有可能以u
一种对象的方式操纵Person
对象并以一种很好的方式打招呼?
class Person():
def __init__(self, name):
self.name = name
def say_hello(self):
print("Hi, my name is " + self.name)
class Unfriendly_Person(Person):
def say_hello(self):
print("Leave me alone!")
u = Unfriendly_Person("TJ")
u.say_hello()
解决方案
你可以分配给__class__
,所以
class Person():
def __init__(self, name):
self.name = name
def say_hello(self):
print("Hi, my name is " + self.name)
class Unfriendly_Person(Person):
def say_hello(self):
print("Leave me alone!")
u = Unfriendly_Person("TJ")
u.__class__ = Person
u.say_hello()
输出:
Hi, my name is TJ
但是请记住,这将抛弃所有方法,Unfriendly_Person
即使是那些未在Person
.
推荐阅读
- java - 通过 docker-compose 将 JAVA_OPTS 传递给 Spring Boot 应用程序
- android - 使用 Android Studio 安装 Flutter
- reactjs - 在 React 中使用 this.state 中的值的语法
- azure-devops - ARM错误的VSTS管道部署:找不到与模板文件模式匹配的任何文件
- d3.js - 使用 D3 的可拖动交互式图形元素
- jenkins - 在 Jenkins Scripted Pipeline 中跨阶段设置和引用变量
- raku - 约束多重及其用于选择它们的用途
- javascript - Hc 粘性插件 IE11 问题 - 导航栏没有全宽
- bash - BASH参数扩展时单引号行为不一致的原因?
- javascript - PHP:刷新特定页面上的每个人