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

Crossin的编程教室

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

【Python 第50课】 面向对象(4)

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-1 00:33:58 |显示全部楼层
lsxx043 发表于 2013-8-31 13:33
另外def drive的函数中间,为什么一定要distance/self.speed,而不是直接distance/speed,speed不是已经定 ...

如果不加self,那speed就只是drive函数中的一个局部变量
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-1 00:34:21 |显示全部楼层
lsxx043 发表于 2013-8-31 13:35
而且,distance又为何不建立一个def __init__()?

distance只是个变量,不是类。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

25

积分

新手上路

Rank: 1

发表于 2014-4-3 16:44:55 |显示全部楼层
老师,
我写的代码与您一样,可是运行到,class Bike(Vehicel):就出问题了。代码及问题如下:
# -*- coding: cp936 -*-
class Vehicle:
    def _init_(self,speed):
        self.speed=speed
        
    def drive(self,distance):
        print"need %f hours(s)" %(distance/self.speed)

class Bike(Vehicel):
    pass

class Car(Vehicle):
    def _init_(self,speed,fuel):
        Vehicle._init_(self,speed)
        self.fuel=fuel

    def drive(self,distance):
        Vehicle.drive(self,distance)
        print"need %f fuels"%(distance*self.fuel)

b=Bike(15.0)
c=Car(80.0,0.012)
b.drive(100.0)
c.drive(100.0)
--
>>> = RESTART =
>>>

Traceback (most recent call last):
  File "C:/Python27/作业题/lesson50class.py", line 9, in <module>
    class Bike(Vehicel):
NameError: name 'Vehicel' is not defined
>>> 是怎么回事呢,恳请老师解答~

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-4-3 17:39:31 |显示全部楼层
fptxyy 发表于 2014-4-3 16:44
老师,
我写的代码与您一样,可是运行到,class Bike(Vehicel):就出问题了。代码及问题如下:
# -*- coding ...

你拼成了 Vehicel
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

25

积分

新手上路

Rank: 1

发表于 2014-4-7 10:00:44 |显示全部楼层
本帖最后由 fptxyy 于 2014-4-7 10:04 编辑
crossin先生 发表于 2014-4-3 17:39
你拼成了 Vehicel


是啊,感谢老师!真是太惭愧了, 竟然没看出来  
送花 * * *
回复

使用道具 举报

0

主题

1

好友

36

积分

新手上路

Rank: 1

发表于 2014-6-27 18:19:53 |显示全部楼层
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)
        self.fuel = fuel

-----------------------------------------------
这一块是重新定义了__init__()这个函数
但是它里面的变量继承了Vehicle的speed变量的熟悉,对吗?
------------------------------------------------
为什么要重新定义__init__和drive函数?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-6-28 17:00:00 |显示全部楼层
脑子有音乐 发表于 2014-6-27 18:19
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)

因为作为子类,有自己专属的__init__方法和drive方法,不能直接套用父类的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

36

积分

新手上路

Rank: 1

发表于 2014-6-28 19:48:57 |显示全部楼层
crossin先生 发表于 2014-6-28 17:00
因为作为子类,有自己专属的__init__方法和drive方法,不能直接套用父类的

speed可以继承,但__init__方法和drive()方法不能继承,这个有点搞不懂了
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-6-30 17:23:58 |显示全部楼层
脑子有音乐 发表于 2014-6-28 19:48
speed可以继承,但__init__方法和drive()方法不能继承,这个有点搞不懂了

speed也被重新赋值了。如果不去碰speed,那它就会和它的父类一样
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

49

积分

新手上路

Rank: 1

发表于 2014-7-3 09:32:53 |显示全部楼层
本帖最后由 萧风 于 2014-7-3 09:34 编辑
  1. class Vehicle:
  2.     def __init__(self,speed):                  #为什么这里有__init__,后面的drive没有?init函数有什么作用?
  3.         self.speed=speed                            #为什么要有self.speed=speed?        
  4.                                                                #请老师讲的直白一些,前面的那些回复我没看懂

  5.     def drive(self,distance):
  6.         print"need %f hours"%(distance/self.speed)
  7. class Bike(Vehicle):
  8.     pass

  9. class Car(Vehicle):
  10.     def __init__(self,speed,fuel):
  11.         Vehicle.__init__(self,speed)
  12.         self.fuel=fuel

  13.     def drive(self,distance):
  14.         Vehicle.drive(self,distance)
  15.         print"need %f fuels"%(distance*self.fuel)


  16. b=Bike(15.0)
  17. c=Car(80.0,0.012)
  18. b.drive(100.0)
  19. c.drive(100.0)
复制代码
回复

使用道具 举报

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

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

GMT+8, 2024-3-28 23:58 , Processed in 0.017620 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部