python类学习

1.魔术方法__init__(相当于php中的__construct)
(1)
>>> class Test:
    def __init__(self):
        self.var=34

        
>>> f=Test()
>>> f.var
34

(2)
>>> class Test:
    def __init__(self,name='4nail'):
        self.name=name

        
>>> f=Test()
>>> f.name
'4nail'
>>> f=Test('this is a init')
>>> f.name
'this is a init'
>>>

2.继承(inherite),B继承A
>>> class A:
    def getClassName(self):
        print 'Hello,I am A'

        
>>> class B(A):
    pass

>>> a=A()
>>> b=B()
>>> a.getClassName()
Hello,I am A
>>> b.getClassName()
Hello,I am A
>>>

3.方法的覆盖
(1)
>>> class B:
    def getClassName(self):
        print 'Hello,I am B'

        
>>> a=A()
>>> b=B()
>>> a.getClassName()
Hello,I am A
>>> b.getClassName()
Hello,I am B
>>>

(2)出错,因为父类构造方法被覆盖了,所以会出错
>>> class Emploee:
    def __init__(self):
        self.name='wang'

        
>>> class Developer(Emploee):
    def __init__(self):
        self.age=23
    def getAge(self):
        print self.age

        
>>> a.name
'wang'
>>> b=Developer()
>>> b.age
23
>>> b.name

Traceback (most recent call last):
  File "<pyshell#96>", line 1, in <module>
    b.name
AttributeError: Developer instance has no attribute 'name'
>>>

(3)
解决(2)方法
>>> class Developer(Emploee):
    def __init__(self):
        Emploee.__init__(self)#调用父类构造方法
        self.age=34
    def getAge(self):
        return self.age

    
>>> a=Emploee()
>>> b=Developer()
>>> a.name
'wang'
>>> b.age
34
>>> b.name
'wang'
>>>

你可能感兴趣的:(PHP,python,F#)