整理Python(类的继承)

1.继承类

如果已经定义了父类Person,需要定义新的Student和Teacher类时,可以直接Person类继承

class Person:
     def __init__(self,name,gender):
        self.name=name
        self.gender=gender

定义子类时,只需要把额外的属性加上即可

class Student(Person):
    def __init__(self,name,gender,score):
    super(Student,self).__init__(name,gender)    #super(Student,self).__init__(name,gender) 去初始化父类
    self.score=score                             #super(Student,self) 返回当前类继承的父类,然后调用__init__方法

2.判断类型

函数isinstance() 可以判断一个变量的类型,返回True 或False

s=Student('li','male','59')

print(isinstance(s,Person))
print(isinstance(s.Student))

3.多态

任何对象,只要有read()方法,就成为File-like-Object, 都可以传给json.load(  )

#编写File-like-Object
#把字符串 r'['li','zhang','sun','wang']包装成File-like-Object,并由json.load()解析

import json

class Students(object):
    def read(self):
        return r'['li','zhang','sun','wang']

s=Students()
print(json.load(s))

4.多重继承

多重继承的目的是从两种继承中分别继承出子类,以便组合功能使用

class D(B,C):
    def __init__(self,a):
        super(D,self).__init__(a)
        print('init D ...')

5.获取对象信息

type( )函数:获取变量的类型

dir( )函数:获取变量的所有属性    #返回的是字符串列表

#用filter( ) 函数和dir( ) 函数,只保留自己定义的属性

class Person(object):
    def __init__(self,name,gender):
        self.name=name
        self.gender=gender

class Student(Person):
    def __init__(self,name,gender,score):
    super(Student,self).__init__(name,gender)
        self.score=score

s=Student('lii','male','99')                 # x.strip('__')表示去掉字符串的'__'子串
print(dir(s))                                #如x为__class__,则去掉后为class,但x 不等于x.strip('__'),返回False
print(list(filter(lambda x:x= =x.strip('__'),dir(s))))    # x 等于x.strip('__'),返回True

如果已知一个属性名称,要获取或者设置对象的属性,用getatter()和setatter(  )函数了

s=Student('li','male','59')
getatter(s,'name')   #获取name属性  ,返回‘li’

setatter(s,'name','wang')  #设置name属性,返回‘wang’

定义Person,提供任意额外的关键字参数

class Person(object):
    def __init__(self,name,gender,**kw):
        self.name=name
        self.gender=gender
        for k,v in kw.iteritems():
            setatter(self,k,v)

p=Person('zhang','male',age=25,score=99)
print(p.age)
print(p.score)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值