Python类

class abs:
    def abs(self):
         raise NotImplementedError
类本身就是一个对象,具有独立命名空间。

class A:
    count = 0
    alive = 0
    def __init__(self): # 创建时调用
         print "this is first called"
         self.__class__.count = self.__class__.count+1
    def __del__(self): # 删除对象时调用
         print "del is called"
    def __repr__(self): # 使用repr()函数调用时,返回和eval()兼容对象字符串表达式,用于重建对象,如>>> a=A() >>> repr(a) >>> eval(repr(a))	    
	    return "A()"
    def __cmp__(self,other): # 比较操作符,和other比较,0相等,1大于,-1小于
	    if other > 0 : return 1;
	    else if other < 0 : return -1;
	    else : return 0
    def __nozero__(self): # 定义对象逻辑,返回0表示对象逻辑假,返回1表示逻辑真
	    if self.alive==0 : return 0
	    else : return 1
    def __len__(self): # 在内置函数len调用对象时,被调用,返回obj长度,如没定义此函数,调用len(obj)会导致异常
	    return 0
    def __getitem__(self,key): # self[key]模拟列表、词典、元组等数据结构
	    if key == "G" : return "girl"
	    elif key == "B" : return "boy"
	    else : return "unknown"
    def __str__(self): # 
	    return "ok, this class A"    
    def sayHelloWorld(self):
         print "Hello world!"

类内部定义的方法,至少包含一个self参数,类似C++中的this。规则:如果从类内部调用方法则一定要包括self作为第一个参数;如调用对象的方法,则直接调用。若obj是类A的一个实例,sayHelloWorld(self)是类A的一个方法,则obj.sayHelloWorld()和A.sayHelloWorld(obj)是一致的。解释:类提供一个建立一个独立name space的机制,每一个实例都有自己独立的name space。在类的方法中,self在方法的local name space中,指向类的实例。当obj=A()时,创建实例,并有自己独立的name space,这个name space 是 A 的name space的一个拷贝(类的实例的name space和类的name space是完全独立的)。self代表实例。每个实例中的name space中都有一个__class__的name,用来指向创建该实例的类对象。例如:obj = A()
obj.sayHelloWorld()
A.sayHelloWorld(obj)
类建立一个独立的name space。任何内部变量都是类的属性。
属性可随时建立,随时删除。如obj无a的属性,则任何地方可用obj.a=1创建一个新的属性。类的方法中self.a=1或外部使用obj.a=1。
即使同一个类的两个不同实例也可有不同属性,可用del删除实例的属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值