Renaissance_1221 2023-07-14 18:10 采纳率: 92.9%
浏览 16
已结题

Python:一个关于私有属性的问题

想问一下,类中的方法难道不也是函数吗?为什么函数play()和函数ah()调用的方式不一样,而且输出的结果也不一样。什么叫作在实例中并不能直接访问到成员变量的私有属性?

img


谢谢!

  • 写回答

2条回答 默认 最新

  • Lemon2050 2023-07-14 19:00
    关注

    play()是实例方法,意思是创建一个类的实例才能够访问的方法。你的代码里有一个类dog, 所以当你用
    dog = Dog("旺财") 这行代码创建了一个Dog类的实例,并将这个实例赋值给dog。这个时候才能通过dog.play()调用play()方法。

    ah()是一个普通方法,可以直接调回,无需任何实例;而且实例只能调用class中有的实例方法。ah方法已经在类外,所以无法被实例访问。

    另外,python的实例方法中有一个默认的参数,也就是self, 它表示实例本身,可以通过self来调用实例方法,已经属性。

    你的代码在有一个错误,就是在ah(self)方法中,ah是普通方法,无法使用self关键字。你可以改成:

    def ah(name):
        print('我的名字是', name)
    

    所以你现在首先要学会区分不同的方法类型,比如,普通方法,实例方法,类方法,静态方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 创建了问题 7月14日