鱼C论坛

 找回密码
 立即注册
查看: 1268|回复: 8

[已解决]有关面向对象的self的问题

[复制链接]
发表于 2019-8-8 12:53:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是面向对象36节的动动手0答案:

class Person:
    name = '小甲鱼'
   
    def printName(self):
       print(self.name)

但是我运行出来是这样子:TypeError: printName() missing 1 required positional argument: 'self'
没办法print出'小甲鱼'
求助,谢谢大佬!!
最佳答案
2019-8-8 13:02:22
你是直接 Person.printName 吧?正确代码:
  1. class Person:
  2.     name = '小甲鱼'

  3.     @staticmethod
  4.     def printName():
  5.         print(Person.name)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-8 12:59:15 | 显示全部楼层
你自己的代码贴出来看看呢?我用上面的代码运行没问题啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-8 13:02:22 | 显示全部楼层    本楼为最佳答案   
你是直接 Person.printName 吧?正确代码:
  1. class Person:
  2.     name = '小甲鱼'

  3.     @staticmethod
  4.     def printName():
  5.         print(Person.name)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 14:20:00 | 显示全部楼层
chordblue 发表于 2019-8-8 12:59
你自己的代码贴出来看看呢?我用上面的代码运行没问题啊。

我这个代码写不出来,然后我是输入Person.printName()的。就还是出错,但楼下的大佬用@staticmethod的语句就能运行了,是怎么回事呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 14:20:35 | 显示全部楼层
zltzlt 发表于 2019-8-8 13:02
你是直接 Person.printName 吧?正确代码:

谢谢大佬,我加了@staticmethod就可以啦,这个是为什么呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-8 14:27:35 | 显示全部楼层
winter宇 发表于 2019-8-8 14:20
谢谢大佬,我加了@staticmethod就可以啦,这个是为什么呢?

@staticmethod 是静态方法装饰器,它把一个方法变成静态的(就是没有 self 参数),通过 @statiicmethod 装饰过的方法可以直接 类.方法名 来访问,而无需创建一个实例后访问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 15:41:20 | 显示全部楼层
zltzlt 发表于 2019-8-8 14:27
@staticmethod 是静态方法装饰器,它把一个方法变成静态的(就是没有 self 参数),通过 @statiicmethod  ...

那我不加@staticmethod 的话我不知道怎么访问,是要创建一个示例吗?大佬能不能举个栗子呀,谢谢啦!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-8 15:43:11 | 显示全部楼层
winter宇 发表于 2019-8-8 15:41
那我不加@staticmethod 的话我不知道怎么访问,是要创建一个示例吗?大佬能不能举个栗子呀,谢谢啦!!

不加 @staticmethod 只需要把 self 参数去掉便可,但不可以通过 Person().printName() 访问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-8 15:43:58 | 显示全部楼层
想要一举两得,推荐使用 @staticmethod
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 21:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表