请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Python 第49课】 面向对象(3)

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-7-15 00:11:32 |显示全部楼层
Joshtu 发表于 2016-7-14 17:02
先生:
这个Class Car里面:time = distance / speed也不会报错。
class Car:

不一样。没报错是因为你没有调用 drive 方法吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

40

积分

新手上路

Rank: 1

发表于 2016-7-15 09:51:02 |显示全部楼层
crossin先生 发表于 2016-7-15 00:11
不一样。没报错是因为你没有调用 drive 方法吧

先生,调用了drive的哦
>>> class Car:
    speed = 0
    def drive(self, distance):
        time = distance / speed
        print time

        
>>> car = Car()
>>> car.speed = 60.0
>>> car.drive(100.0)
1.66666666667
回复

使用道具 举报

0

主题

0

好友

40

积分

新手上路

Rank: 1

发表于 2016-7-15 10:11:12 |显示全部楼层
Joshtu 发表于 2016-7-15 09:51
先生,调用了drive的哦
>>> class Car:
    speed = 0

先生我明白了,加self.speed和不加self的区别了!
如果class里面不加self.speed,直接用speed;每次调用的结果都是一样的:
上梨子:
>>> car1 = Car()
>>> car1.speed = 60.0
>>> car1.drive(100.0)
1.66666666667
c
>>> car1.drive(200.0)
3.33333333333
>>> car2 = Car()
>>> car2.speed = 150.0
>>> car2.drive(100.0)
1.66666666667
>>> car2.drive(200.0)
3.33333333333
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-7-15 13:17:31 |显示全部楼层
Joshtu 发表于 2016-7-15 10:11
先生我明白了,加self.speed和不加self的区别了!
如果class里面不加self.speed,直接用speed;每次调用的 ...

应该是你前面设定过一个变量叫speed。不然speed会引起为定义错误
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

96

积分

注册会员

Rank: 2

发表于 2017-1-6 10:38:41 |显示全部楼层
老师
speed = 0
car.drive(100.0)
这两个地方不是很明白,speed后面不是可以随意变动吗?为什么要先给他赋值为0
car.drive 这里不是从类里调用函数吗
def drive(self, distance)这个函数的参数有两个,为什么一定会是distance
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-1-6 20:48:13 |显示全部楼层
l0ve1o24 发表于 2017-1-6 10:38
老师
speed = 0
car.drive(100.0)

赋值为0是为了确保在使用之前有一个默认值,不然直接调用的话会报错。

类函数的第一个参数 self 是不用你传递的,指向函数的调用对象
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

发表于 2017-2-28 20:20:39 |显示全部楼层
当初刚入学的时候,必修课学的C艹。做作业时候,感觉很多需求无法实现或者实现起来很困难。后来旁听Objective C的时候才恍然大雾:原来还有面向对象这种东西。。。。
(虽然有些云里雾里的,而且STL模板差点把我吓退了。但是 根据我当时想到的需求和疑惑,对 面向对象的方法 有了一个大概的认知)
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

发表于 2017-2-28 20:22:46 |显示全部楼层
感觉形式上 有点类似 结构体 struct
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-2-28 23:57:51 |显示全部楼层
brahmagupta 发表于 2017-2-28 20:22
感觉形式上 有点类似 结构体 struct

这两个确实有相似之处
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

发表于 2017-8-2 19:28:09 |显示全部楼层
把self关键字可以替换成其他,如毫无意义的DD,TT等。self只是这个参数的一个名字而已。

声明对象内容中的定义函数中有两个参数(self,distance),实际调用时因为第一个参数是指向本身不需要传递,只需传递distance。

老师我这样理解差不多吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-17 07:41 , Processed in 0.028378 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部