设为首页收藏本站

Crossin的编程教室

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

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

[复制链接]

0

主题

1

好友

132

积分

注册会员

Rank: 2

28#
发表于 2015-12-10 17:20:32 |只看该作者
get
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

27#
发表于 2015-3-20 17:09:16 |只看该作者
  1. #coding:gbk
  2. #练习类的建立
  3. class vehicle():
  4. #构造方法
  5.                 def __init__(self,speed):
  6.                                 self.speed = speed
  7. #驾驶方法
  8.                 def drive(self,distance):
  9.                                 time = distance/self.speed
  10.                                 print '需要的驾驶时间是:%d'%time
  11. #自行车
  12. class Bike(vehicle):
  13.                 pass
  14. #汽车
  15. class Car(vehicle):
  16.                 def __init__(self,speed,fuel):
  17.                                 vehicle.__init__(self,speed)
  18.                                 self.fuel = fuel
  19.                 def drive(self,distance):
  20.                                 vehicle.drive(self,distance)
  21.                                 fuelcount = distance/100*self.fuel
  22.                                 print '您开的是汽车,需要耗油%d升'%(fuelcount)
  23.        
  24. #测试-------------
  25. bike = Bike(2)
  26. bike.drive(100)
  27. car = Car(100,7)
  28. car.drive(100)
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

26#
发表于 2014-9-26 10:41:30 |只看该作者
liu-pengfei 发表于 2014-9-26 00:39
是不是每次生成对象的时候,b = Bike(15.0),会首先自动调用,def __init__(self, speed):
        self.sp ...

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

使用道具 举报

0

主题

0

好友

558

积分

高级会员

Rank: 4

25#
发表于 2014-9-26 00:39:43 |只看该作者
是不是每次生成对象的时候,b = Bike(15.0),会首先自动调用,def __init__(self, speed):
        self.speed = speed,这个方法,把15.0自动赋值给了speed,这个对象就有了speed的值。
学习,纯粹。
回复

使用道具 举报

24#
匿名  发表于 2014-7-29 22:58:43
class Vehicle:
    def __init__(self, speed):
        self.speed = speed
     #赋值函数,将成员变量值speed(抽象的、任何机器的speed)赋给函数内实际调用值self.speed(函数内真正用到的某个机器的speed),以便下面的函数调用(成员函数里的变量都是特指的某个具体的变量,用self.开头)
    def drive(self, distance):
        print 'need %f hour(s)' % (distance / self.speed)
  #这个是个类里面的成员函数,计算功能
class Bike(Vehicle):
    pass
#完全继承,不用改动

class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)
        self.fuel = fuel
   赋值函数,在继承vehicle的基础上,Vehicle.__init__(self, speed)是继承过来的,多加了个fuel,同样把fuel值赋给self。fuel以备调用
    def drive(self, distance):
        Vehicle.drive(self, distance)
        print 'need %f fuels' % (distance * self.fuel)
#成员函数,按规则计算功能,除了按vehicle的规则计算用时外,加入了新规则计算油耗(这里用到了self.fuel值)。
b = Bike(15.0)
c = Car(80.0, 0.012)
b.drive(100.0)
c.drive(100.0)
计算结果是三个。
这个面向对象的程序,简单来讲就是指定一个公用的类,设定变量(包括类成员变量,实际计算调用具体变量),制定规则(应用成员函数)
   这是我个人的理解。
                   -------------------------------------------------鹰隼
回复

使用道具

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

23#
发表于 2014-7-3 15:01:59 |只看该作者
萧风 发表于 2014-7-3 09:45
没懂

这个我无法一两句给你简单形象的解释了。
建议你去找本系统的编程书籍看一看面向对象的介绍。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

49

积分

新手上路

Rank: 1

22#
发表于 2014-7-3 09:45:56 |只看该作者
crossin先生 发表于 2013-9-1 00:34
distance只是个变量,不是类。

没懂
回复

使用道具 举报

1

主题

0

好友

49

积分

新手上路

Rank: 1

21#
发表于 2014-7-3 09:45:33 |只看该作者
crossin先生 发表于 2013-9-1 00:33
如果不加self,那speed就只是drive函数中的一个局部变量

这个有什么影响?
回复

使用道具 举报

1

主题

0

好友

49

积分

新手上路

Rank: 1

20#
发表于 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)
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2014-6-30 17:23:58 |只看该作者
脑子有音乐 发表于 2014-6-28 19:48
speed可以继承,但__init__方法和drive()方法不能继承,这个有点搞不懂了

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

使用道具 举报

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

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

GMT+8, 2024-5-18 23:41 , Processed in 0.023965 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部