2018-07-03-Python全栈开发day24-面向对象设计

面向对象:

  根据现实中存在的东西,模拟出其特征,用来描述特定对象。

1.用函数来完成面向对象

  

 1 def school(name,addr):#学校具有名称和地址
 2     def dict_(name,addr):
 3         dict_={
 4             'name':name,
 5             'addr':addr,
 6             'kao_shi':kao_shi,#当选取对应的key值时,运行这个函数
 7             'zhao_sheng':zhao_sheng
 8         }
 9         return dict_
10     def kao_shi():
11         print('now is kaoshi')
12     def zhao_sheng():
13         print('now is zhaosheng')
14     return dict_(name,addr)
15 #运行
16 
17 p1=school('yehiabin','shandong')
18 p2=p1['kao_shi']()#从中选取函数进行运行
19 #类的各种属性,其实也是在这个字典之中的,调用的时候,是取对应的key值

这是用函数来完成面向对象设计,用school来模拟一个学校的特性,在特征内定义它的数据属性和函数属性,然后可以进行调用,给school传值的时候,也就是一个生成实例的过程

2.类与实例

  在python中,用class来定义类,类具有数据属性和函数属性,为了节省内存,实例只具有数据属性,在需要函数属性的时候向类中进行调取。

2.1 属性的增删改查

  2.1.1 查看

    

class China:#声明类的时候,一般以大写开头
    def __init__(self,age):
        self.age=age#给self赋予了一个age方法,值为输入的age,,p.age=age
    name='yehaibin'#数据属性#进行增删改查
    def qiong(self):
        print('zhengzaitutan',self.age)
#查看
print(China.name)

  2.1.2 修改

    

class China:#声明类的时候,一般以大写开头
    def __init__(self,age):
        self.age=age#给self赋予了一个age方法,值为输入的age,,p.age=age
    name='yehaibin'#数据属性#进行增删改查
    def qiong(self):
        print('zhengzaitutan',self.age)
China.name='heiheihie'

  2.1.3 删除

  

class China:#声明类的时候,一般以大写开头
    def __init__(self,age):
        self.age=age#给self赋予了一个age方法,值为输入的age,,p.age=age
    name='yehaibin'#数据属性#进行增删改查
    def qiong(self):
        print('zhengzaitutan',self.age)
del China.name

  2.1.4 增加

    

class China:#声明类的时候,一般以大写开头
    def __init__(self,age):
        self.age=age#给self赋予了一个age方法,值为输入的age,,p.age=age
    name='yehaibin'#数据属性#进行增删改查
    def qiong(self):
        print('zhengzaitutan',self.age)
def eat(self,name):
    print('%s adssa%s' %(self.age,name))
China.eat=eat
China.gender='nans'

2.2 类与实例

  1. 实例在调用方法时,会自动传入self值,类不会

  2.凡是使用.来调取方法的,都必须遵从类的方法,也就是无法从全局变量中引用

    

name='123'
class Test:
    name='567'
    def test():
        print(name)
p1=Test.test
print(p1)
---
123#因为name是直接使用的,所以会调用全局变量,
ame='123'
class Test:
    name='567'
    def test(self):
        print(self.name)
p1=Test()
print(p1.test())#此时调用了类的方法,这是类内的作用域有效果

  3.在类中可以看做函数的作用域

  4.

   

  

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9261019.html
今日推荐