设为首页收藏本站

Crossin的编程教室

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

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

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

11#
发表于 2014-7-3 15:01:59 |显示全部楼层
萧风 发表于 2014-7-3 09:45
没懂

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2015-12-17 14:19:10 |显示全部楼层
周末晒被子 发表于 2015-12-17 00:40
先生,我对__init__函数还是有点疑问,我试着在49课的例子改一下:

class Car:

__init__是两个下划线,内置函数都是两个下划线
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

14#
发表于 2015-12-17 22:10:29 |显示全部楼层
周末晒被子 发表于 2015-12-17 15:14
子类Bike(Vehicle))应该是直接套用了父类吧?
不能直接套用父类,是当,子类需要有自己的专属的方法时, ...

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

15#
发表于 2016-3-14 12:40:39 |显示全部楼层
弹星者 发表于 2016-3-13 09:27
在crossin老师代码的最后添加了两行,想尝试一下子类调用父类里的函数,然而运行的时候报错了,这个错误为 ...

没有这种语法。

一般不会这么用。如果硬要对一个子类对象去调用它被覆盖的父类方法,那首先,它的父类要继承自object:
  1. class Vehicle(obect):
  2. ...
复制代码
然后写成:
  1. super(Car, d).drive(100)
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

16#
发表于 2016-4-13 21:16:26 |显示全部楼层
exchen 发表于 2016-4-13 11:06
不懂就一点speed在整个程序中的作用是什么

self.speed,这里speed就是对象的成员变量,是这个对象独有的属性
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2016-6-3 13:45:00 |显示全部楼层
kuaikemai 发表于 2016-6-3 13:19
老师,有两个问题:
1.
b = Bike(15.0)

效果类似,但不是缩写。如你所说,__init__这么定义了,所以必须在初始化的时候给。从规范上来说,一个东西如果有一个必须得在一开始就设定的属性,那应该初始化就给。不然别人用你的类的时候,可能并不知道还必须要给这个值
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2017-1-12 17:45:14 |显示全部楼层
l0ve1o24 发表于 2017-1-12 16:14
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)

效果一样,但你这个就没有调用父类方法了。等于完全抛弃了原有的代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2017-7-11 22:57:48 |显示全部楼层
nic8523 发表于 2017-7-11 16:59
请问 Bike类中的pass是一个关键字吗?可以不写这个pass吗?

是个关键字,不写的话这里就空了,那会报错。pass就是什么也不做,但保证程序的结构完整
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

20#
发表于 2017-11-4 15:27:31 |显示全部楼层
z850672062 发表于 2017-11-4 15:00
是不是因为继承了父类

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

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

使用道具 举报

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

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

GMT+8, 2024-5-4 02:39 , Processed in 0.025156 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部