鱼C论坛

 找回密码
 立即注册
查看: 1031|回复: 6

[已解决]Python定义类的问题

[复制链接]
发表于 2020-4-18 16:54:58 | 显示全部楼层 |阅读模式

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

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

x
  1. class Turtle:
  2.     def __init__(self,x):
  3.         self.num = x

  4. class Fish:
  5.     def __init__(self,x):
  6.         self.num = x

  7. class Pool:
  8.     def __init__(self,x,y):
  9.         self.turtle = Turtle(x)
  10.         self.fish = Fish(y)

  11.     def print_num(self):
  12.         print("乌龟 % 只,小鱼 % 条!"%(self.turtle.num,self.fish.num))
复制代码



  1. p = Pool(1,10)
  2. >>> p.print_num()
  3. Traceback (most recent call last):
  4.   File "<pyshell#1>", line 1, in <module>
  5.     p.print_num()
  6.   File "C:\Users\Avein\Desktop\1.py", line 15, in print_num
  7.     print("乌龟 % 只,小鱼 % 条!"%(self.turtle.num,self.fish.num))
  8. ValueError: unsupported format character '?' (0x53ea) at index 5
复制代码



调用出这个问题,这是小甲鱼39讲里头我照着打的,应该没打错,但不出结果,可以先不管这个,重要的问题是定义类累的时候,里面函数的参数中那个self到底是什么,然后就是定义类的时候类是没有参数这一说的,那么调用类的时候括号中的参数是怎么来的,麻烦各位大佬解释一下原理
最佳答案
2020-4-18 17:04:49
self 类似于指针this,它可以指向类的成员变量。
初始化需要什么参数,就看__init__ ()括号里面定义了几个参数,self不算在内啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-18 16:58:54 | 显示全部楼层
self是实例,调用实例的变量就要加self。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 17:00:16 | 显示全部楼层
第15行代码应该是%d,改成:
  1. print("乌龟 %d 只,小鱼 %d 条!"%(self.turtle.num,self.fish.num))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 17:04:49 | 显示全部楼层    本楼为最佳答案   
self 类似于指针this,它可以指向类的成员变量。
初始化需要什么参数,就看__init__ ()括号里面定义了几个参数,self不算在内啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 17:08:36 | 显示全部楼层
格式化的时候应该是 %d,不是单单一个 %,应该这样写:

  1. class Turtle:
  2.     def __init__(self,x):
  3.         self.num = x

  4. class Fish:
  5.     def __init__(self,x):
  6.         self.num = x

  7. class Pool:
  8.     def __init__(self,x,y):
  9.         self.turtle = Turtle(x)
  10.         self.fish = Fish(y)

  11.     def print_num(self):
  12.         print("乌龟 % 只,小鱼 % 条!"%(self.turtle.num,self.fish.num))
复制代码


self 就是类的实例,通过实例访问方法时实例会自动将自己传递进去,不用手动传递。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 17:14:52 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 17:04
self 类似于指针this,它可以指向类的成员变量。
初始化需要什么参数,就看__init__ ()括号里面定义了几 ...

可以兄弟,我有其他语言的基础,这样一说觉得明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 17:30:15 | 显示全部楼层
czh1303541051 发表于 2020-4-18 17:14
可以兄弟,我有其他语言的基础,这样一说觉得明白了

哈哈哈,明白就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 09:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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