python的类与对象

对象

在之前我们学习过许多的对象类型,如:数、字符串、列表、元组和字典等等,但是我们只是了解到其使用方法,本次就是深入的了解对象是什么。
使用对象的好处:
多态:可对不同类型的对象执行相同的操作

>>>def length_message(x):
		print("The length of", repr(x), "is", len(x)) 
>>> length_message('Fnord')
The length of 'Fnord' is 5
>>> length_message([1, 2, 3])
The length of [1, 2, 3] is 3 

封装:对外部隐藏有关对象工作原理的细节。


类的定义——一种对象。每个对象都属于特定的类,并被称为该类的实例。比如麻雀是鸟这一类,麻雀是鸟的子集。
创建一个类

>>>class Person:
 	def set_name(self, name):
	    self.name = name
    def get_name(self):
        return self.name
    def greet(self):
        print("Hello, world! I'm {}.".format(self.name))
>>> foo = Person()
>>> bar = Person()
>>> foo.set_name('Luke Skywalker')
>>> bar.set_name('Anakin Skywalker')
>>> foo.greet()
Hello, world! I'm Luke Skywalker.
>>> bar.greet()
Hello, world! I'm Anakin Skywalker.
>>> foo.name
'Luke Skywalker'
>>> bar.name = 'Yoda'
>>> bar.greet()
Hello, world! I'm Yoda.

私有
防止在使用类时不知道内部情况的程序员修改了不该修改的东西,将其保护起来

class Secretive:
 def __inaccessible(self):
 print("Bet you can't see me ...")
 def accessible(self):
 print("The secret message is:")
 self.__inaccessible()
#现在从外部不能访问__inaccessible,但在类中(如accessible中)依然可以使用它。
>>> s = Secretive()
>>> s.__inaccessible()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: Secretive instance has no attribute '__inaccessible'
>>> s.accessible()
The secret message is:
Bet you can't see me ... 

类的命名空间

class MemberCounter:
 members = 0
 def init(self):
 MemberCounter.members += 1
>>> m1 = MemberCounter()
>>> m1.init()
>>> MemberCounter.members
1
>>> m2 = MemberCounter()
>>> m2.init()
>>> MemberCounter.members
2 

在类中命名的这个变量所有成员均可访问他。
指定超类
子类扩展了超类的定义。要指定超类,可在class语句中的类名后加上超类名,并将其用圆括号括起。

class Filter:
 def init(self):
 self.blocked = []
 def filter(self, sequence):
 return [x for x in sequence if x not in self.blocked]
class SPAMFilter(Filter): # SPAMFilter是Filter的子类
 def init(self): # 重写超类Filter的方法init
 self.blocked = ['SPAM']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值