python获得java类的对象_python 对象 类

python 对象 类

创建自己得类

>>> class Person:

def setName(self,name):

self.name=name

def getName(self):

return self.name

def greet(self):

print 'hello world ~ I\'m %s.' % self.name

>>> xiaoq=Person()

>>> xiaoq.setName("qiaochao")

>>> xiaoq.greet()

hello world ~ I'm qiaochao.

定义私有方法或者特性,只要在前面加上双下划线即可

>>> class PP:

def setName(self,name):

self.name=name

def getName(self):

return self.name

def __greet(self):

print 'hello world ~ I\'m %s.' % self.name

def meet(self):

self.__greet()

>>> p=PP()

>>> p.greet()

Traceback (most recent call last):

File "", line 1, in

p.greet()

AttributeError: PP instance has no attribute 'greet'

>>> p.setName("qiao")

>>> p.meet()     -----------------  自己内部可以调用私有方法

hello world ~ I'm qiao.

类的内部定义中,所有以双下划线开始的名字都被“翻译”成前面加上单下划线和类名的形式,实际上还是能在类外访问私有方法(尽管不应该这么做)

>>> p._PP__greet()

hello world ~ I'm qiao.

-----------------------------------------------------------------------------------

指定超类

>>> 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):    -------------  重写init 方法

self.blocked=['SPAM']

>>> f=Filter()

>>> f.init()

>>> f.filter([1,2,3])

[1, 2, 3]

>>> s=SPAMFilter()

>>> s.init()

>>> s.filter(['SPAM','SPAM','asd','asdx','SPAM'])

['asd', 'asdx']

issubclass 函数

查看一个类是否是另一个类的子类,可以使用内建函数issubclass函数

>>> issubclass(SPAMFilter,Filter)

True

>>> issubclass(Filter,SPAMFilter)

False

要想知道已知类的基类(们),可以直接使用它的特殊特性__bases__

>>> SPAMFilter.__bases__

(,)

>>> Filter.__bases__

()

isinstance方法检查一个对象是否为一个类的实例

>>> isinstance(s,SPAMFilter)

True

>>> isinstance(f,Filter)

True

>>> isinstance(s,Filter)

True

>>> isinstance(f,SPAMFilter)

False

__class__特性可以知道一个对象属于哪个类

>>> s.__class__

---------------------------------------------------------------------------------------

多重继承 ,多超类

>>> class Calculator:

def calur(self,expression):

self.value=eval(expression)

>>> class Talker:

def talk(self):

print 'hi,my name is sss'

>>> class TalkandCalulator(Calculator,Talker):

pass

>>> tc = TalkandCalulator()

>>> tc.talk()

hi,my name is sss

>>> tc.calur('1+2*3')

检查所需方法是否存在:

>>> hasattr(tc,'talk')   -------------- 存在返回True 不存在 False

True

>>> hasattr(tc,'fnord')

False

检查特性是否可被调用

>>> callable(getattr(tc,'talk',None))  ---- None 为提供的默认值

True

>>> callable(getattr(tc,'fnord',None))

False

callable函数在python3.0中已经不可再用

setattr 可以用来设置对象的特性

>>> setattr(tc,'name','qiao')

>>> tc.name

'qiao'

-------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值