找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2714|回复: 5

[求助] 关于Python类创建以及使用的问题

1

主题

3

帖子

3

积分

贫民

积分
3
hqk1109 发表于 2017-10-17 19:45:27 | 显示全部楼层 |阅读模式
我刚开始学习Python,在学到其面向对象的功能时,对于class的创建与使用遇到了问题。还望有哥们指点下我自学看的书是《Python编程从入门到实践》,以下是书中截图

来着《Python编程从入门到实践》P140

来着《Python编程从入门到实践》P140

用的sublime_text编辑器,然后我就按书上的内容敲了进去并运行了一下,提示我失败
微信图片_20171017193539.png 不知道是不是书本错了,还是我哪儿没有操作好?

根据自己课上学C++那烂的要死的功底,我猜测着尝试了下可能可以运行的代码,然后就可以了。
微信图片_20171017193531.png

这到底是为什么呢?还有_init_()到底是咋工作的?
回复

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
zhnglicho 发表于 2017-10-19 14:22:48 | 显示全部楼层
首先 你再 dog.py 中定义了类 Dog,  当你要实例化的时候,你需要import 你的类到python 环境, 不知道你是怎么调用的?
这里有2中方法调试
1. 类和调用的代码都写到同一个文件, 调用的时候可以 在命令行 写 python dog.py
  1. class Dog:
  2.     def __init__(self,name,age):
  3.         self.name = name
  4.         self.age = age

  5.     def sit(self):
  6.         print(self.name.title() + ' is now sitting')

  7.     def roll_over(self):
  8.         print(self.name.title() + ' rolled over')


  9. if __name__ == '__main__':
  10.     my_dog = Dog('willie',6)
  11.     my_dog.sit()
  12.     my_dog.roll_over()
复制代码


2. 类 定义在 .py  文件, 在 python 环境里执行类方法
  1. from dog import Dog
  2. my_dog = Dog('willie',6)
  3. my_dog.sit()
  4. my_dog.roll_over()
复制代码



如果你对面向对象熟悉的话,你可以把 __init__(self) 理解为构造函数

回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-10-19 21:57:54 | 显示全部楼层
__init__的下划线是两个. 比较一下 一个和两个的区别 _ __
python3.4.4, win10
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
hqk1109  楼主| 发表于 2017-10-31 20:00:03 | 显示全部楼层
zhnglicho 发表于 2017-10-19 14:22
首先 你再 dog.py 中定义了类 Dog,  当你要实例化的时候,你需要import 你的类到python 环境, 不知道你是 ...

__init__(self)是不是相当于申明了类的基本属性,就相当于狗有着名字、性别、年龄等基本属性一样?

还有就是第1种方法调用是怎么回事?能在详细说明下吗?
if __name__ == '__main__'  这句话判别了什么?
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
hqk1109  楼主| 发表于 2017-10-31 20:00:59 | 显示全部楼层
whydo1 发表于 2017-10-19 21:57
__init__的下划线是两个. 比较一下 一个和两个的区别 _ __

谢谢你,后来我也发现了,好像是初学者很容易出现的问题
回复 支持 反对

使用道具 举报

0

主题

9

帖子

9

积分

贫民

积分
9
屋顶星008 发表于 2017-11-24 22:00:30 | 显示全部楼层
恩,两根下滑线,一边两根。
回复 支持 反对

使用道具 举报

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

本版积分规则

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