python之面向对象与实例属性

一、三大编程范式

1.1面向过程编程

面向对象编程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。

# 打扫房间
print('开始扫地')

def step_1():
    print('准备扫帚')

def step_2():
    print('打扫房间')

def step_3():
    print('扫完,将扫帚放回原地')

step_1()
step_2()
step_3()
执行结果如下:

开始扫地
准备扫帚
打扫房间
扫完,将扫帚放回原地

1.2函数编程

函数式编程:函数式 = 编程语言定义的函数+数学意义的函数;通俗来讲,函数式就是用编程语言去实现数学函数。这种函数内对象是永恒不变的,要么参数是函数,要么返回值是函数,没有for和while循环,所有的循环都由递归去实现,无变量的赋值(即不用变量去保存状态),无赋值即不改变。

1.3面向对象编程

面向对象就是将编程当成是一个事物,编程就是设置事物能够做什么事。二

def personal(name,gender,type):
    #人的动作
    def enroll(personal):
        print('%s去福建上学' %personal['name'])
    def province(personal):
        print('北京大学经济与管理学院录取了[%s]' %personal['type'])

    def init(name,gender,type):
        personal1 = {
            "name": name,
            "gender": gender,
            "type": type,
            "enroll": enroll,
            "province":province
        }
        return personal1
    return init(name,gender,type)

p1=personal('czd','male','fzuniv')
print(p1)
p1['enroll'](p1)
p2=personal('dfz','female','bduniv')
print(p2)
p2['province'](p2)
View Code

二、类与对象的基本理解

类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念。

对象:就是基于类而创建的一个具体的事物(具体存在的),也是特征和动作整合到一块。

类与对象的关系:对象都是由类产生的。

实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个实例(实例=对象)

三、类与对象的相关知识

3.1类相关知识

python2中有经典类和新式类,python3中都是新式类.

新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类

#声明一个类

#经典类
class Chinese:
    '这是一个中国人的类'
    pass
print(Chinese)

#实例化到底干了什么
p1=Chinese()      #实例化过程
print(p1)         #返回一个结果,相当于return


#新式类
class Chinese(object):     #(父类)
    pass
print(Chinese)

3.1.1 属性

类是用来描述一类事物,类的对象指的是这一类事物中的一个个体。

事物就要有属性,属性分:

    a.数据属性:就是变量

    b.函数属性:就是函数,在面向对象里通常称为方法

概括:数据属性即变量,类的定义与函数又极其类似,其实可以用函数的作用域来理解类的属性调用。

3.1.2查看类属性

定义的类属性到底存放到哪里了?有两种方式查看

     dir(类名):查出的是一个名字列表

    类名.__dict__:查出的是一个字典,key为属性名,value为属性值

3.2对象相关知识

class Japanese:
    party='民主党'
    def __init__(self,name,age,gender):
        self.mingzi=name
        self.nianling=age
        self.xingbie=gender
    def sui_di_tu_tan():
        print('朝着....就是一口痰')
    def cha_dui(self):
        print("%s查到了前面" %self.mingzi)

p1=Japanese('dsa',16,'male')            #----->__init__(self,name,age,gender)

print(Japanese.__dict__)
Japanese.sui_di_tu_tan()
Japanese.cha_dui(p1)

3.3类属性的增删改查

class Chinese:
    party='新民党'
    def __init__(self,name,age,gender):
        self.mingzi=name
        self.nianling=age
        self.xingbie=gender
    def sui_di_tu_tan(self):
        print('%s朝着....就是一口痰' %self.mingzi)
    def cha_dui(self):
        print("%s查到了前面" %self.mingzi)
    def eat_food(self,food):
        print('%s正在吃%s' %(self.mingzi,food))

p1=Chinese('李志强',23,'male')
p1.sui_di_tu_tan()
p1.eat_food('大盘鸡')


p2=Chinese('caw',25,'female')
p2.eat_food('佛跳墙')

# ------------查
# print(Chinese.party)

#--------------改
Chinese.party='guomindang'
print(Chinese.party)

 #------------增
Chinese.guojia='中国'
print(Chinese.guojia)

#  ----------删
del Chinese.party
print(Chinese.__dict__)

3.4实例属性的增删改查

class Chinese:
    country='China'
    def __init__(self,name):
        self.name=name
    def play_ball(self,name):
        print('%s正在打%s'%(self.name,ball))

p1=Chinese('czd')
print(p1.__dict__)

# -----------查看
print(p1.name)
print(p1.play_ball)

# -----------增加
p1.age=18
print(p1.__dict__)
print(p1.age)

#------------修改
Chinese.country='日本'
print(Chinese.country)
p1.age=20
print(p1.__dict__)
print('------>',p1.age)

#------------删除
del Chinese.country
print(Chinese.__dict__)
View Code

四、对象和实例的补充

class Chinese:
    country='China'
    l=['a','b']
    def __init__(self,name):
        self.name=name
    def play_ball(self,name):
        print('%s正在打%s'%(self.name,ball))

p1=Chinese('czd')
print(p1.l)

p1.l=[1,2,3]
print(Chinese.l)       #改的是p1的,Chinese.l不变
print(p1.__dict__)

p1.l.append('c')         #在类里面增加
print(p1.__dict__)
print(Chinese.l)
View Code

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/changzhendong/p/11260329.html