RicardoM.Lu1 2022-12-07 16:31 采纳率: 82.1%
浏览 42
已结题

在python面向对象的学习中,跨类调用直接创建对象时遇到问题

在跨类调用的时候 我想直接创建对象
class Person:
    def __init__(self, name):
        self.name = name

    def clean(self, cleaner):
        cleaner.sweep()
        print(f"保洁阿姨去{self.name}家打扫卫生", end="")


class Notify:
    def __init__(self):
        self.name1 = Person()
    def sweep(self):
        print(f"{self.name1.name}通知保洁阿姨打扫卫生")
Xm = Person("小明")
cleaner = Notify()
Xm.clean(cleaner)


Traceback (most recent call last):
  File "/home/tarena/month01/day10/exercise3.py", line 49, in <module>
    cleaner = Notify()
  File "/home/tarena/month01/day10/exercise3.py", line 45, in __init__
    self.name1 = Person()
TypeError: Person.__init__() missing 1 required positional argument: 'name'

######暂时没想到什么解决办法

想调用Person里的name参数作为下面输出的内容
  • 写回答

5条回答 默认 最新

  • honestman_ 2022-12-07 16:44
    关注

    因为实例化Notify对象的时候没有传递名字,所以导致Notify调用Person的时候没有name参数,所以报错加上一个参数就好了:

    class Person:
        def __init__(self, name):
            self.name = name
        def clean(self, cleaner):
            cleaner.sweep()
            print(f"保洁阿姨去{self.name}家打扫卫生", end="")
    class Notify:
        def __init__(self, name):
            self.name1 = Person(name)
        def sweep(self):
            print(f"{self.name1.name}通知保洁阿姨打扫卫生")
    Xm = Person("小明")
    cleaner = Notify("小明")
    Xm.clean(cleaner)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 赞助了问题酬金15元 12月7日
  • 修改了问题 12月7日
  • 展开全部

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法