鱼C论坛

 找回密码
 立即注册
查看: 1755|回复: 9

[已解决]关于类的问题

[复制链接]
发表于 2017-8-31 23:44:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Book(object):
    def __init__(self, title):
        super(Book, self).__init__(self)
        self.title = title

# Define a book

b = Book('The Django Book')
print b.title
上面算是OOP语言的入门代码了,粗略一看__init__和Java中的构造函数一样,其实不然,实际上它根本不能算的上构造函数。__new__才是创建实例的方法。


以上摘自网络 其中有代码里面的'class Book(object):'后面'(object)'是什么?还有'super(Book, self).__init__(self)'这行又是什么含义,小甲鱼教材里类、对象那一章节好像并没有介绍到
最佳答案
2017-9-1 08:53:47
本帖最后由 、尾指一勾 于 2017-9-1 08:57 编辑

Python2有两种一种新式 一种旧式, object 是新式类  区别在于:
1、写法不同:
                  新式类: class A(object):
                  旧式类: class A:
2、搜索方法不同:
                  新式类:广度优先(广撒网)
                  旧式类:深度优先(一股脑钻到底)

新式类对象可以直接通过__class__属性获取自身类型:type

还有就是新式类多了 __slots__    内置属性

增加了__getattribute__方法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-1 02:24:34 | 显示全部楼层
  1. class Book(object
复制代码
)表示这个类继承于object这个父类(你可以去看看后面的视频,比如继承啊之类的)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-1 08:11:57 From FishC Mobile | 显示全部楼层
Wesleyz 发表于 2017-9-1 02:24
)表示这个类继承于object这个父类(你可以去看看后面的视频,比如继承啊之类的)

类名开头不是要大写的么 也没给基类怎么就继承了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 08:53:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 、尾指一勾 于 2017-9-1 08:57 编辑

Python2有两种一种新式 一种旧式, object 是新式类  区别在于:
1、写法不同:
                  新式类: class A(object):
                  旧式类: class A:
2、搜索方法不同:
                  新式类:广度优先(广撒网)
                  旧式类:深度优先(一股脑钻到底)

新式类对象可以直接通过__class__属性获取自身类型:type

还有就是新式类多了 __slots__    内置属性

增加了__getattribute__方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 08:54:02 | 显示全部楼层
s1dney 发表于 2017-9-1 08:11
类名开头不是要大写的么 也没给基类怎么就继承了

所有类都继承于object,你也可以不写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 08:58:41 | 显示全部楼层
WylLy 发表于 2017-9-1 08:54
所有类都继承于object,你也可以不写

这是Python2 要使用新式类 需要写object  Python3 可以不写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 09:14:19 | 显示全部楼层
这一句理论上是继承了Book的父类(这里也就是object类)的__init__
不过实际上在这里并没什么用,只能算是样例展示。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 09:17:33 | 显示全部楼层
、尾指一勾 发表于 2017-9-1 08:58
这是Python2 要使用新式类 需要写object  Python3 可以不写

原来这样,学习了,我只用Py3,所以到没有关注过2,多谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-2 17:51:04 | 显示全部楼层
、尾指一勾 发表于 2017-9-1 08:53
Python2有两种一种新式 一种旧式, object 是新式类  区别在于:
1、写法不同:
            ...

我想请问下super里面的Book,self  和__init__里面的self 不写,执行起来一样吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-5 10:02:20 | 显示全部楼层
s1dney 发表于 2017-9-2 17:51
我想请问下super里面的Book,self  和__init__里面的self 不写,执行起来一样吗

你这个例子 在Python3 下面跑不起来············
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表