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

在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日
  • 展开全部