设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

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

[复制链接]

0

主题

0

好友

20

积分

新手上路

Rank: 1

58#
发表于 2018-3-2 16:32:47 |只看该作者
本帖最后由 Frank.Lin 于 2018-3-2 16:34 编辑

py3里面如下代码,求老师解惑:
  1. class Vehicle:
  2.     def __init__(self,speed):
  3.         self.speed=speed

  4.     def drive(self,distance):
  5.         print('nees %f hour(s)'%(distance/self.speed)
  6.    class Bike(Vehicle):
  7.               pass
  8.               
  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)
  20.                
复制代码
系统报错,invalid syntax,再class Bike(vehicle)那里。请教下老师及各位同学,到底是什么原因?
回复

使用道具 举报

3

主题

0

好友

35

积分

新手上路

Rank: 1

57#
发表于 2018-1-22 04:31:29 |只看该作者
非常感谢crossin老师! 很多原本自己不懂的问题原来大家也有, 谢谢老师耐心解答~!

P.S. 希望大家以后问问题可以有礼貌一点!! 很多人都没说谢谢, 有些话语还过于直接. crossin老师在很无私地用自己的时间给我们免费解答.
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

56#
发表于 2017-11-17 10:04:30 |只看该作者
Selvaria 发表于 2017-11-16 17:07
谢谢,但以前一直没注意到这个问题,比如:
def isequal(x,y):
    if x == y:

因为你没有另外 print 函数的值
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

40

积分

新手上路

Rank: 1

55#
发表于 2017-11-16 17:07:40 |只看该作者
crossin先生 发表于 2017-11-16 09:04
你没有 return
看下函数的返回值那课

谢谢,但以前一直没注意到这个问题,比如:
def isequal(x,y):
    if x == y:
        print('Equal!')
    else:
        print('Not eaqual')
我没有写return,执行后也并未出现None值
>>> isequal(1,2)
Not eaqual
>>> isequal(2,2)
Equal!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

54#
发表于 2017-11-16 09:04:16 |只看该作者
Selvaria 发表于 2017-11-16 08:41
嗯,谢谢。后来自己也发现了。但是执行后会多一行结果None,这是为啥

你没有 return
看下函数的返回值那课
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

40

积分

新手上路

Rank: 1

53#
发表于 2017-11-16 08:41:39 |只看该作者
crossin先生 发表于 2017-11-15 19:32
cost是函数,后面的括号呢
看下函数那几课

嗯,谢谢。后来自己也发现了。但是执行后会多一行结果None,这是为啥
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

52#
发表于 2017-11-15 19:32:06 |只看该作者
Selvaria 发表于 2017-11-15 14:27
class Vehicle(object):
    def __init__(self,speed):
        self.speed = speed

cost是函数,后面的括号呢
看下函数那几课
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

40

积分

新手上路

Rank: 1

51#
发表于 2017-11-15 14:27:06 |只看该作者
class Vehicle(object):
    def __init__(self,speed):
        self.speed = speed

class Car(Vehicle):
    def __init__(self, speed, distance, oil_spent):
        Vehicle.__init__ = speed
        self.distance = distance
        self.oil_spent = oil_spent
    def cost(self):
        f = self.distance * self.oil_spent
        print('we need %s fuels' %f)

class Bike(Vehicle):
    pass

bike = Bike(40)
car = Car(80,100,0.012)
print(car.cost)

我是自己写的,为什么我只能查到一大串内存值,像这样:
<bound method Car.cost of <__main__.Car object at 0x0173ABD0>>
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

50#
发表于 2017-11-4 15:27:31 |只看该作者
z850672062 发表于 2017-11-4 15:00
是不是因为继承了父类

所以c.drive(100.0) 调用的是父类(超类)的 drive方法

是呀
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

49#
发表于 2017-11-4 15:00:39 |只看该作者
z850672062 发表于 2017-11-4 14:55
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)

是不是因为继承了父类

所以c.drive(100.0) 调用的是父类(超类)的 drive方法
回复

使用道具 举报

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

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

GMT+8, 2024-5-18 14:45 , Processed in 0.028289 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部