面向对象编程

class Foo:
    def __init__(self):
        print('I am in init')
        self.x='python'

f=Foo()
print(f)
print(dir(f))
继承
#coding:utf-8

'''
多继承
'''

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__)#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)
# print(Foo.__name)
f=Foo()#实例化
print(f.book)
# print(f.__name)

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())
# print(f1.__author())
定制类
#coding:utf-8

'''
分数
'''

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)
#b.city='changsha' #不能增加属性
#b.age=38  #不能改变属性的值

class A: pass
a=A()
#a.x #访问不存在的属性会报错

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)

迭代器和生成器
#coding:utf-8

def fibs():
    prev,curr=0,1
    while True:
        yield prev
        prev,curr=curr,prev+curr

import itertools
print(list(itertools.islice(fibs(),10)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值