设为首页收藏本站

Crossin的编程教室

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

【Python 第49课】 面向对象(3)

[复制链接]

0

主题

1

好友

36

积分

新手上路

Rank: 1

11#
发表于 2014-6-28 21:19:19 |只看该作者
class MyClass:
    count = 0
    name = "DefaultName"
    def __init__(self,name):
        self.name = name
        print "the class name is: %s\nthe self name is %s"%(MyClass.name,self.name)
    def GetInfo(self,name):
        print "get information by:%s"% (self.name)
        print "get information by:%s"% (name)

p=MyClass("Joan")
p.GetInfo("KK")
---------------------------------------------------
the class name is: DefaultName
the self name is Joan
get information by:Joan
get information by:KK
只有调用__init__对象的变量的时候要加self,其他可以不用加是吗? 这里不是特别懂
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 2014-6-30 17:22:51 |只看该作者
脑子有音乐 发表于 2014-6-28 21:19
class MyClass:
    count = 0
    name = "DefaultName"

申明时,所有类方法的第一个参数必须是 self,这个会指向调用这个方法的对象本身。

调用时不需要你加,指向调用者自身的引用会被自动赋值给这个self
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

558

积分

高级会员

Rank: 4

13#
发表于 2014-9-27 00:05:37 |只看该作者
看了几天的面向对象,好像有一点点懂了,以后更加努力。
学习,纯粹。
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

14#
发表于 2016-1-28 23:34:32 |只看该作者
的确有些抽象,看了一些别人写的文章也似懂非懂,感觉还是crossin先生这样举一些循序渐进的例子更有助于理解。
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

15#
发表于 2016-3-29 09:05:44 |只看该作者
self.speed 是什么鬼,self是变量啊,self.speed 这个格式很不理解
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

16#
发表于 2016-3-29 13:11:13 |只看该作者
212121212 发表于 2016-3-29 09:05
self.speed 是什么鬼,self是变量啊,self.speed 这个格式很不理解

self是一个指向实例自身的变量
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

18

积分

新手上路

Rank: 1

17#
发表于 2016-5-31 20:37:19 |只看该作者
  1. class vehicle:
  2.     def _init_(self,speed):
  3.         self.speed = speed
  4.     def drive(self,distance):
  5.         print 'need %.2f time'%float(distance)/self.speed
  6.         
  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,distace):
  14.         vehicle.drive(self,distace)
  15.         print 'need %f fuel'%(distace*self.fuel)

  16. a = Bike(15.0)
  17. b = Car(80.0,0.0025)
  18. a.drive(50)
  19. b.drive(50)
复制代码
上述代码有什么问题呢?总是显示Bike类不需要参数。。。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2016-6-1 11:59:02 |只看该作者
大肚皮的python 发表于 2016-5-31 20:37
上述代码有什么问题呢?总是显示Bike类不需要参数。。。

__init__ 是两个下划线,系统内置方法和属性都是两个下划线
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

18

积分

新手上路

Rank: 1

19#
发表于 2016-6-1 16:02:28 |只看该作者
这个不仔细看还真不容易发现,thx!
回复

使用道具 举报

0

主题

0

好友

40

积分

新手上路

Rank: 1

20#
发表于 2016-7-14 17:02:15 |只看该作者
crossin先生 发表于 2013-12-2 19:06
speed是成员变量,这个类的每个实例都会有一个属于自己的speed
drive是成员函数,它要被这个类的实例所调 ...

先生:
这个Class Car里面:time = distance / speed也不会报错。
class Car:
        speed = 0
        def drive(self, distance):
                time = distance / speed
                print time
和你写的 time = distance / self.speed
效果一样吗?
回复

使用道具 举报

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

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

GMT+8, 2024-11-22 01:53 , Processed in 0.017584 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部