python的面向对象-实例(对象)的相关知识、实例化

本文详细介绍了Python中类与对象的基本概念,包括类的定义、实例化过程、实例属性与类属性的区别及访问方式,以及如何通过实例调用类的方法。

1、对象就是实例,什么是实例

类运行的过程就是实例化的过程,实例化产生的结果就是产生了一个实例

class的牛逼之处就是不用手动的return,他会加载完函数之后,自动return  __init__这个函数里面的字典,字典当中封装了数据属性

函数属性就是属于类的

2、实例化

只要用类名加()的方式运行,(在类中这个运行叫实例化)首先会运行__init__这个函数

class Chinese:#定义了Chinese这个类
    dang="当"#定义了一个数据属性dang
    def __init__(self,name,age,gender):
        print("我是初始化函数,我开始运行了")
        self.mingzi=name
        self.nainji=age
        self.xignbie=gender#这样写完之后会自动return
        print("我结束啦")
    def suiditutan():#定义了一个函数属性
        print("朝着墙上就是一口黄痰")
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self)
p1=Chinese("北爷",33,"female")

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

我是初始化函数,我开始运行了

我结束啦

实例化的过程就是运行__init__这个函数,从而生成一个字典,这个字典就是实例(对象)

字典当中封装的是数据属性

查看下p1这个实例的内容

class Chinese:#定义了Chinese这个类
    dang=""#定义了一个数据属性dang
    def __init__(self,name,age,gender):
        print("我是初始化函数,我开始运行了")
        self.mingzi=name
        self.nainji=age
        self.xignbie=gender#这样写完之后会自动return
        print("我结束啦")
    def suiditutan():#定义了一个函数属性
        print("朝着墙上就是一口黄痰")
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self)
p1=Chinese("北爷",33,"female")
print(p1.__dict__)

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

我是初始化函数,我开始运行了

我结束啦

{'nainji': 33, 'xignbie': 'female', 'mingzi': '北爷'

注意:__init__里面不要有return   加了就会报错,class会自动帮你return

3、实例属性可以访问到类属性

class Chinese:#定义了Chinese这个类
    dang=""#定义了一个数据属性dang
    def __init__(self,name,age,gender):#self就是p1本身
        print("我是初始化函数,我开始运行了")
        self.mingzi=name#p1.mingzi=name
        self.nianji=age#p1.nainji=age
        self.xingbie=gender#这样写完之后会自动return
        print("我结束啦")
    def suiditutan():#定义了一个函数属性
        print("朝着墙上就是一口黄痰")
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self)
p1=Chinese("北爷",33,"female")
print(p1.__dict__)#字典里面只有数据属性
print(p1.__dict__["nianji"])#用字典的方式取字典里面的value
print(p1.__dict__["mingzi"])
print(p1.nianji)#实例调用nianji
print(p1.mingzi)#这是实例的数据属性
# print(p1.mingzi222)#会报错,实例调用方法的时候会从__dict__里面找,找不到就报错了
print(p1.dang)#用实例去调用类的数据属性,虽然__dict__里面没有,但是上一级有

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

我是初始化函数,我开始运行了

我结束啦

{'nianji': 33, 'xingbie': 'female', 'mingzi': '北爷'}

33

北爷

33

北爷

当

实例在调用属性的时候,先找实例的属性字典里面,如果没有的话,就去类的属性字典里面找,类里面在没有的话就报错了

4、类调用方法直接用类名加()

class Chinese:#定义了Chinese这个类
    dang=""#定义了一个数据属性dang
    def __init__(self,name,age,gender):#self就是p1本身
        print("我是初始化函数,我开始运行了")
        self.mingzi=name#p1.mingzi=name
        self.nianji=age#p1.nainji=age
        self.xingbie=gender#这样写完之后会自动return
        print("我结束啦")
    def suiditutan():#定义了一个函数属性
        print("朝着墙上就是一口黄痰")
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self.mingzi)
p1=Chinese("北爷",33,"female")
Chinese.suiditutan()
Chinese.chadui(p1)

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

我是初始化函数,我开始运行了

我结束啦

朝着墙上就是一口黄痰

北爷 插到了前面

5、用实例调用方法

class Chinese:#定义了Chinese这个类
    dang=""#定义了一个数据属性dang
    def __init__(self,name,age,gender):#self就是p1本身
        print("我是初始化函数,我开始运行了")
        self.mingzi=name#p1.mingzi=name
        self.nianji=age#p1.nainji=age
        self.xingbie=gender#这样写完之后会自动return
        print("我结束啦")
    def suiditutan(self):#定义了一个函数属性
        print("%s 朝着墙上就是一口黄痰" %self.mingzi)
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self.mingzi)
p1=Chinese("北爷",33,"female")
Chinese.suiditutan(p1)#类调用方法
Chinese.chadui(p1)#类调用方法
p1.chadui()#实例调用方法,会自动把p1传给self
p1.suiditutan()#实例调用方法,会自动把p1传给self

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

我是初始化函数,我开始运行了

我结束啦

北爷 朝着墙上就是一口黄痰

北爷 插到了前面

北爷 插到了前面

北爷 朝着墙上就是一口黄痰

6、再实例化一个p2  增加一个类的函数属性,用实例调用一下

class Chinese:#定义了Chinese这个类
    dang=""#定义了一个数据属性dang
    def __init__(self,name,age,gender):#self就是p1本身
        self.mingzi=name#p1.mingzi=name
        self.nianji=age#p1.nainji=age
        self.xingbie=gender#这样写完之后会自动return
    def suiditutan(self):#定义了一个函数属性
        print("%s 朝着墙上就是一口黄痰" %self.mingzi)
    def chadui(self):#又定义了一个函数属性
        print("%s 插到了前面" %self.mingzi)
    def eatfood(self,food):
        print("%s 正在吃%s" %(self.mingzi,food))
p1=Chinese("北爷",33,"female")
p1.eatfood("黄痰")
p2=Chinese("喵爷",28,"female")
p2.suiditutan()#实例调用类的函数属性,会自动把p1传给self
p2.eatfood("黄焖鸡米饭")#实例调用类的函数属性,会自动把p1传给self

C:\python35\python3.exe D:/pyproject/day24/对象相关知识.py

北爷 正在吃黄痰

喵爷 朝着墙上就是一口黄痰

喵爷 正在吃黄焖鸡米饭

转载于:https://www.cnblogs.com/gouguoqilinux/p/9190496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值