类
class Foo:
def __init__(self):
print('I am in init')
self.x='python'
f=Foo()
print(f)
print(dir(f))
继承
'''
多继承
'''
class K1:
def foo(self):
print('k1-foo')
class K2:
def foo(self):
print('K2-foo')
def bar(self):
print('K2-bar')
class J1(K1,K2):
pass
class J2(K1,K2):
def bar(self):
print('J2-bar')
class C(J1,J2):
pass
print(C.__mro__)
m=C()
m.foo()
m.bar()
多态与封装
ef add(x,y):
return print(x+y)
add(3,4)
add('aodou','python')
class Foo:
__name='laoqi'
book='python'
print(Foo.book)
f=Foo()
print(f.book)
class Foo1:
def __init__(self):
self.name='laoqi'
self.__group='laoqi classroom'
def code(self):
return self.__group
def __author(self):
return self.name
f1=Foo1()
print(f1.code())
定制类
'''
分数
'''
class Fraction:
def __init__(self,number,denom=1):
self.number=number
self.denom=denom
def __str__(self):
return str(self.number)+'/'+str(self.denom)
__repr__=__str__
f=Fraction(2,3)
print(f)
控制属性访问
class Foo:
name='laoqi'
print(Foo.__dict__)
a=Foo()
print(a.__dict__)
a.age=25
print(a.__dict__)
a.year=28
print(a.__dict__)
class Bar:
__slots__=('name','age')
Bar.name='laoqi'
Bar.age=28
b=Bar()
print(b.name)
print(b.age)
class A: pass
a=A()
class B:
def __getattr__(self,name):
print('you user getattr')
def __setattr__(self,name,value):
print('you use setattr')
self.__dict__[name]=value
b=B()
print(b.x)
b.x='python'
print(b.x)
迭代器和生成器
def fibs():
prev,curr=0,1
while True:
yield prev
prev,curr=curr,prev+curr
import itertools
print(list(itertools.islice(fibs(),10)))