继承
新式类 横向优先
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
class D(object):
def f1(self):
print "dbar"
class C(D):
def f1(self):
print "c.bar"
class B(D):
pass
class A(B,C):
pass
obj=A()
obj.f1()
经典类:深度优先
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
class D:
def f1(self):
print "dbar"
class C(D):
def f1(self):
print "c.bar"
class B(D):
pass
class A(B,C):
pass
obj=A()
obj.f1()
类的 字段分为
普通字段和静态字段 ,静态字段存在于类里,普通字段在方法里
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
class sheng(object):
country = '中国' #静态字段
def __init__(self,name):
self.name = name #普通字段
shanxi = sheng('山西')
print shanxi.country
print shanxi.name
shandong = sheng('山东')
print id(shanxi.country)
print id(shandong.country)
1、面向对象三大特性
2、python,封装
a.多个方法共用一组变量,变量封装到对象中
b.游戏
3、继承
a.基类,派生类
b.多继承
c.新式类,经典类
d.广度优先(规则),深入优先 ==》 面试
4、类,对象,内存图
5、类成员
a.字段
普通,静态
b.方法
普通方法 对象 至少一个self,self = 当前对象
类方法 类 只有一个cls,cls = 当前类
静态方法 类 任意参数
c.属性(属性对方法的变种,变成访问时字段相似)
@property
Data = property(方法名)
# obj.Data = 执行方法,并获取方法的返回值
新式类中属性,
@property
@方法名.setter
@方法名.deleter
6、类成员修饰符
公有,私有
__ 开头
私有,只能内部访问。
对象._类__成员
7、变态
obj = Foo()
obj() ==》 __call__
8、__dict__
9、__str__
作业:
1.计算器
2.游戏人生