设为首页收藏本站

Crossin的编程教室

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

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

[复制链接]

0

主题

0

好友

36

积分

新手上路

Rank: 1

68#
发表于 2018-10-16 20:34:24 |只看该作者
marvinmi 发表于 2018-10-16 20:27
这是我跑的代码,大概明白是什么意思,不过为什么说 Bike 这个类没有 drive 对象呢,这里好像是没有成功调 ...

报错提示

屏幕快照 2018-10-16 下午8.28.25.png (12.68 KB, 下载次数: 289)

报错描述

报错描述

回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

67#
发表于 2018-10-16 20:27:08 |只看该作者
这是我跑的代码,大概明白是什么意思,不过为什么说 Bike 这个类没有 drive 对象呢,这里好像是没有成功调用基类的方法吧

屏幕快照 2018-10-16 下午8.24.48.png (197.78 KB, 下载次数: 297)

代码

代码

回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

66#
发表于 2018-5-1 15:56:51 |只看该作者
huangdog 发表于 2018-4-30 19:57
感觉
类和实例化的关系

差不多,我更喜欢用模具和做出来的东西打比喻

不是参数池,是初始化时候调用的函数。即使不在这里,在别的地方一样可以定义,只是这里更适合
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

65#
发表于 2018-4-30 19:57:46 |只看该作者
本帖最后由 huangdog 于 2018-4-30 20:00 编辑

感觉
类和实例化的关系

就像类是盐,实例化是碗,把盐放到不同的碗里,不同的碗做不同的事情

是这样吗?

=================
还有__init__  是不是参数池,将要用到的参数先在__init__定义?
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

64#
发表于 2018-4-20 14:17:15 |只看该作者
找到了几个练习的小程序,链接:https://blog.csdn.net/bullpride/article/details/52022701
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

63#
发表于 2018-4-20 11:30:31 |只看该作者
xkk1212 发表于 2018-4-7 16:24
好像有点明白了,我把顺序换了一下就可以了 但是我不太确定是不是我想的那种意思  谢谢老师了!
class A ...

class A():
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        print self.a+self.b

class B(A):
    def sub(self):
        print self.a-self.b

a = A(1,2)
a.add()
b = B(9,1)
b.sub()

B类完全继承了A类的init方法没有新的变量,是不是就不用再重新定义init了
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

62#
发表于 2018-4-7 16:24:49 |只看该作者
crossin先生 发表于 2018-4-7 13:22
__init__ 不是手动调用的。就算调用,也不用加self。
看看课程里的例子

好像有点明白了,我把顺序换了一下就可以了 但是我不太确定是不是我想的那种意思  谢谢老师了!
class A(object):
    def __init__(self,a,b):
        self.a=int(a)
        self.b=int(b)
    def add(self):
        print self.a+self.b


class B(A):
    def sub(a,b):
        A.__init__(self,a,b)   
        print self.a-self.b
count= B('4',5)
count.add()
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

61#
发表于 2018-4-7 13:22:59 |只看该作者
xkk1212 发表于 2018-4-6 20:11
class A:
    def __init__(self,a,b):
        self.a=int(a)

__init__ 不是手动调用的。就算调用,也不用加self。
看看课程里的例子
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

60#
发表于 2018-4-6 20:11:53 |只看该作者
class A:
    def __init__(self,a,b):
        self.a=int(a)
        self.b=int(b)
    def add(self):
        print self.a+self.b


class B(A):
    A.__init__(self,a,b)
    def sub(self):
        print self.a-self.b
count= B('4',5)
count.add()

继承那部分我自己写了个例子想试试,意图是 B继承A的add方法,同时也新建一个方法,然后在B类里调A的add方法, 参数a,b是一样的从A里继承过来  可是我这样会报错Traceback (most recent call last):
  File "C:/Python27/5.py", line 9, in <module>
    class B(A):
  File "C:/Python27/5.py", line 10, in B
    A.__init__(self,a,b)
NameError: name 'self' is not defined
>>>

求解什么问题?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

59#
发表于 2018-3-3 20:31:45 |只看该作者
Frank.Lin 发表于 2018-3-2 16:32
py3里面如下代码,求老师解惑:系统报错,invalid syntax,再class Bike(vehicle)那里。请教下老师及各位 ...

缩进不对。
class Bike 不是 Vehicle 内部
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-18 13:49 , Processed in 0.027784 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部