设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 35504|回复: 11
打印 上一主题 下一主题

【Python 第48课】 面向对象(2)

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2013-8-8 20:42:56 |只看该作者 |倒序浏览
昨天介绍了面向对象的概念,今天我们来创建一个类。
  1. class MyClass:
  2.     pass

  3. mc = MyClass()
  4. print mc
复制代码
关键字class加上类名用来创建一个类。之后缩进的代码块是这个类的内部。在这里,我们用pass语句,表示一个空的代码块。

类名加圆括号()的形式可以创建一个类的实例,也就是被称作对象的东西。我们把这个对象赋值给变量mc。于是,mc现在就是一个MyClass类的对象。

看一下输出结果:
  1. <__main__.MyClass instance at 0x7fd1c8d01200>
复制代码
这个意思就是说,mc是__main__模块中MyClass来的一个实例(instance),后面的一串十六进制的数字是这个对象的内存地址。

我们给这个类加上一些域:
  1. class MyClass:
  2.     name = 'Sam'

  3.     def sayHi(self):
  4.         print 'Hello %s' % self.name

  5. mc = MyClass()
  6. print mc.name
  7. mc.name = 'Lily'
  8. mc.sayHi()
复制代码
我们给MyClass类增加了一个类变量name,并把它的值设为'Sam'。然后又增加了一个类方法sayHi。

调用类变量的方法是“对象.变量名”。你可以得到它的值,也可以改变它的值。

注意到,类方法和我们之前定义的函数区别在于,第一个参数必须为self。而在调用类方法的时候,通过“对象.方法名()”格式进行调用,而不需要额外提供self这个参数的值。self在类方法中的值,就是你调用的这个对象本身。

输出结果:
  1. Sam
  2. Hello Lily
复制代码
之后,在你需要用到MyClass这种类型对象的地方,就可以创建并使用它。


#==== Crossin的编程教室 ====#
微信ID:crossincode
QQ群:312723402

面向零基础初学者的编程课
每天5分钟,轻松学编程

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

使用道具 举报

7

主题

1

好友

269

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2013-8-8 22:39:08 来自手机 |只看该作者
多看两遍,看不懂啊,亚历山大。
回复

使用道具 举报

0

主题

0

好友

32

积分

新手上路

Rank: 1

板凳
发表于 2013-8-9 11:53:20 |只看该作者
看了文字教程和视频教程才能懂self什么意思!和javascript中的this一个样!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2013-8-9 11:59:28 |只看该作者
byron 发表于 2013-8-8 22:39
多看两遍,看不懂啊,亚历山大。

这个东西确实一下子不好理解
我想办法再举点实例
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

558

积分

高级会员

Rank: 4

5#
发表于 2014-9-27 00:06:07 |只看该作者
看了几天的面向对象,好像有一点点懂了。
学习,纯粹。
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

6#
发表于 2015-12-10 16:19:47 |只看该作者
get
回复

使用道具 举报

2

主题

0

好友

94

积分

注册会员

Rank: 2

7#
发表于 2016-4-21 18:10:35 |只看该作者
函数和类的区别是什么啊老师
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2016-4-22 10:59:32 |只看该作者
exchen 发表于 2016-4-21 18:10
函数和类的区别是什么啊老师

函数是一种带有输入(参数)和输出(返回值),具有某种功能的方法。
类是定义一种模板,这种模板用来产生对象,每个对象都具有这种模板里定义的各种属性和方法。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

34

积分

新手上路

Rank: 1

9#
发表于 2019-11-29 11:26:42 |只看该作者
本帖最后由 PMCoding 于 2019-11-29 11:49 编辑

第(1)节猜测class object之所以出现,是为了套用一系列属性变化和计算逻辑的,从而更快捷的构建代码逻辑解决相同和类似问题
第(2)节涉及具体例子才清晰一点,有一个问题,请教先生:
#Py3输入
class myclass:
    name='meepo'

    def sayhi(self):
        print('hello%s'%self.name)
kfc=myclass()
print(kfc.name)
kfc.name='kunkka'
print(kfc.sayhi())

#py3输出
meepo
hellokunkka
None

Process finished with exit code 0

#问题
为什么print用了括号后,第三行多输出了一个None的结果,他的逻辑在哪里,
还是已经涉及后面的课程,感谢热心大神解答。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 2019-11-29 12:20:53 |只看该作者
PMCoding 发表于 2019-11-29 11:26
第(1)节猜测class object之所以出现,是为了套用一系列属性变化和计算逻辑的,从而更快捷的构建代码逻辑 ...

是函数的内容
sayhi 函数没有返回值,默认返回 None
你 print 它的结果,就是 None
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-11-25 06:19 , Processed in 0.028197 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部