您可能不希望class本身是一个可变属性,而是使用诸如enum之类的东西来指示这样的状态。根据需求,您可以考虑以下几种模式之一:class RelationshipStatus(Enum):

STRANGER = 0

FRIEND = 1

PARTNER = 2

@dataclass

class Person(metaclass=ABCMeta):

full_name: str

smell: str = "good"

status: RelationshipStatus = RelationshipStatus.STRANGER

@dataclass

class GreetablePerson(Person):

nickname: str = ""

@property

def greet_name(self):

if self.status == RelationshipStatus.STRANGER:

return self.full_name

else:

return self.nickname

def say_hi(self):

print(f"Hi {self.greet_name}")

if __name__ == '__main__':

random_stranger = GreetablePerson(full_name="Robert Thirstwilder",

nickname="Bobby")

random_stranger.status = RelationshipStatus.STRANGER

random_stranger.say_hi()

random_stranger.status = RelationshipStatus.FRIEND

random_stranger.say_hi()

您可能还希望以trait/mixin样式实现这一点。与其创建一个GreetablePerson,不如创建一个同样抽象的类Greetable,并使您的具体类继承这两个类。在

您还可以考虑使用优秀的、后端口的、更灵活的^{}包。这也使您能够使用evolve()函数创建一个新对象:

^{pr2}$

python 类继承 baseclass_Python:Dataclass继承自base Dataclass,如何将值从base升级到新类?...相关推荐

  1. Python 类的定义、继承及使用对象

    Python 类的定义.继承及使用对象 作者:保⑩洁 本文转载:http://www.17jo.com/program/python/base/ClassUse.html Python编程中类的概念可 ...

  2. python代码学习——类与对象提升(继承、超继承,类的例题,魔术方法)

    python代码学习--类与对象提升 继承 继承的特殊属性: 代码示例 方法的重写和覆盖(overrrid) 总结 超继承 继承中的初始化 多继承 例题 类的魔术方法 哈希(hash)和eq方法 bo ...

  3. 零基础入门学习Python(36) 类和对象:继承

    继承的语法结构 class DervieClassName(BaseClassName) 被继承的类我们称之为"父类","基类"或"超类", ...

  4. python类变量继承_python 类的成员及继承

    1. @staticmethod 静态方法 静态方法不能访问实例变量和类变量,除了身处类里面,所以只能通过类调用以外,它其实和类没有什么关系.如果想要用它访问实例变量或类变量,需要把实例和类传递给函数 ...

  5. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  6. python编程-迭代器(类,方法,继承),函数,数据结构,

    a, b = 0, 1 while b < 10:print(b) #print(b,end=',')a, b = b, a+b相当于 n=b m=a+b a=n b=m输出: 1 1 2 3 ...

  7. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...

  8. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  9. python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承

    1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...

  10. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

最新文章

  1. 并发库应用之三 线程池与定时器应用
  2. 利用Python实现矩阵乘法并与numpy的结果比较
  3. 多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter
  4. 对于Array的引用
  5. SAP Spartacus里Product Carousel componentData取数据的逻辑研究
  6. win7系统屏幕键盘打开教程
  7. 华住数据库_华住内控人系列故事(四)技术领先篇——搭建大数据风险数据仓,实现自助取数...
  8. CMS 平台: Drupal, eZ Publish, WordPress, CMS Made Simple 横向比较
  9. 基于SSM的二手交易平台
  10. php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端
  11. 航空订票系统设计(java、数据库、通信联合项目)
  12. 【单片机】简单的时钟代码
  13. 微信小程序 转发 分享功能
  14. FRM-10102错误解决
  15. linux 同步utc时间吗,中国时区utc在服务器上同步的办法
  16. 运用深度学习进行文本生成
  17. 作为互联网人,这些潮流词汇你懂吗?
  18. 大富豪3(GM商城版)新手攻略之购买土地
  19. 系统设计-开放平台(一)
  20. 知道密码,如何去除Word文档的各种保护?

热门文章

  1. jQuery.bind事件 详解
  2. ASP.NET 2.0加密Web.config 配置文件
  3. System level Programming study(1)
  4. lua32位和64位字符串和Uint之间的转换
  5. java工程师什么城市就业_热门城市的Java薪资情况
  6. Java基础,无需使用复杂语句,实现输出0-130之间的数字,每行显示7个数字。
  7. 平均聚类系数_聚类方法排除CPU用量误报警
  8. python xpath爬虫_[爬虫]python下的xpath清洗数据之html数据清洗
  9. [转] 由Request Method:OPTIONS初窥CORS
  10. Sys.WebForms.PageRequestManagerParserErrorException 错误的解决办法