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)
本文介绍了Python面向对象编程的基础概念,包括如何定义类和对象、继承、多态、多重继承等核心概念。此外还讲解了如何利用isinstance()函数判断对象类型、通过getattro()和setattro()函数操作对象属性,以及如何使用dir()函数获取对象所有属性。
142

被折叠的 条评论
为什么被折叠?



