Rumah > pembangunan bahagian belakang > Tutorial Python > Python3中类Class和对象object的理解(代码示例)

Python3中类Class和对象object的理解(代码示例)

不言
Lepaskan: 2018-10-27 16:00:05
ke hadapan
10080 orang telah melayarinya

本篇文章给大家带来的内容是关于Python3中类Class和对象object的理解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

类 是什么
类是一个抽象的概念,泛指很多相似的个体组成的,具有共同特征的事物。 比如类是一个车
,这车就包括各种车型
什么是对象
类里面的具体的一个事物。 比如 五菱神车S(过弯秒掉GTR的梗还记忆犹新)  ,他是车这个类的具体化,
先有类,才有对象

理解类和对象

def eating():
    print("吃草")
    
def walking():
    print("走路")

eating()
walking()
#(输出)    吃饭
        走路
    
#这样的话,别人也可以调用你写的函数,但是调用eating() 并不能清除的了解到到底是谁 “吃饭”,
#所以我们输入一个name来明确是谁在吃草。

def eating(name):
    print(name,"吃饭")
eating("zhuozi")            #调用函数
#(输出)zhuozi 吃草
Salin selepas log masuk

#但是你会发现 zhuozi用来吃饭,从逻辑上来说是否有点不妥,虽然他语法上没问题,
#所以我们将进行一个归类,将“吃饭”的一类 分为一类,也就是类别,所以我们将它进行标记,class Person:
#为什么P大写是用来和Python内置函数的类作区别,内置的类名都是小写字母(可以ctrl + 鼠标左键点击内置函数查看)

class Person:            #这样我们就将eating封装到了Person这个类里面
                        #只要是Person这一类别的都可以进行下面的行为(eating)
    def eating(name):
        print(name,"吃饭")
        
zhangsan = Person()        #这里就不能像以前一样用eating去调用了,因为只有Person这一类的才能就行eating这个行为
                        #所以我们就要先将zhansan定义为Person这一类    
zhangsan.eating()        #然后才能让张三进行吃草这种行为
#(输出)<__main__.Person object at 0x000001D2CCC21160> 吃饭

lisi = Person()            #lisi也要吃饭,那继续定义lisi 是person 类 他可以吃饭
lisi.eating()            #lisi就可以吃饭了
#(输出)<__main__.Person object at 0x000001BCC6BF1198> 吃饭

#打印的一个地址,一个类的地址 object(翻译就是对象)就表示 lisi是这个类的对象
#lisi 就是 Person这个类 实例化的对象。
Salin selepas log masuk

之前我们 def eating(name):的name 就是可以看做谁进行 eating ,而这里语法的硬性要求就是用self 来代表到底是谁来调用 eating。所以如下:

class Person:
    def eating(self):
        print(self,"吃饭")
Salin selepas log masuk
class Person:
    pass
========
list  这里我们ctrl + 鼠标左键点击pycharm 里面书写的list,如图:
Salin selepas log masuk

在这里插入图片描述
可以看出内置的函数的类名都是小写的,而以前我们用的类 (列表名).append() 也就是我们现在讲的类下面的函数的调用,括号里面的就是对象名self 而列表名就是实例化的对象。

语法

class 类名(父类列表):        #类名和变量名称的命名是一样的,类名首字母要大写,
                            #用来区别是否是内置函数自带的类
    类体
    
数据属性                        #类的共同属性,名字,性别,干什么的,等等

方法属性                        #这个类共同都有的功能,跑,跳,计算,记录等等
Salin selepas log masuk
class Person:
    pass

zhangsan = Person()                #张三是Person实例化的对象,所以要开辟一个内存来存储,
                                #即将zhangsan变量名指向这个内存地址
print(zhangsan)
#(输出)<__main__.Person object at 0x00000194D8D28400>

既然实例化对象后开辟了内存,我们就要在里面进行一个存储
Salin selepas log masuk
class Person:
    pass

zhangsan = Person()
zhangsan.name = "zhangsan"                #给这个实例化的对象附一个名字
print(zhangsan)
#(输出)<__main__.Person object at 0x0000018DF6598400>

print(zhangsan.name)                    #打印出这个对象的名字
#(输出)zhangsan

zhangsan对象名 指向  内存,内存里面有一个属性name,而name指向zhangsan这个名字  两个zhngsan 不一样啊
zhangsan(类的对象名字)  -- 》内存 (name)----》zhangsan(对象的属性)

lisi = Person()                    #再实例化一个对象
lisi.name = "xiaolong"
print(lisi.name)    
print(id(lisi.name))            
lisi = Person()
lisi.name = "xiaolong"

print(id(zhangsan))
#(输出)2070146453856
print(lisi.name)
#(输出)xiaolong
print(id(lisi.name))
#(输出)2070146521264
Salin selepas log masuk
可以看出两个实例化的对象的id是不同的

这里就引出了命名空间规则:
每实例化出来一个对象,如果没进行特别的处理的话都会占用系统单独的内存存储。

class Person:
    pass

zhangsan = Person()                    
zhangsan.name = "zhangsan"
zhangsan.sex = "男"
zhangsan.age = 19
zhangsan.hight = 175

lisi = Person()
lisi .name = "xiaolong"
lisi .sex = "女"
lisi .age = 29
lisi .hight = 170
#两个内容的创建方式相同啊,只是内容不同,那么我们写一个函数来进行这种重复性的操作,
Salin selepas log masuk
class Person:
    def __init__(self, name, sex, age, hight):
        self.name = name        zhangsan.name = name
        self.sex = sex            zhangsan.name = sex
        self.age = age            zhangsan.name = age
        self.hight = hight        zhangsan.name = hight
#self 是为了规范明确是谁调用了,所以相当于将zhangsan这个对象传给了self。
#而后面self之后的name, sex, age, hight 就是所要传入的"zhangsan" "男"19 175 信息
#zhangsan = Person()                
#zhangsan.name = "zhangsan"
#zhangsan.sex = "男"
#zhangsan.age = 19
#zhangsan.hight = 175

这样我们就不用再像上面一样传入了
zhangsan = Person("zhangsan","男","19",175)
print(zhangsan.name)
#(输出)zhangsan
Salin selepas log masuk

init:是系统所存在的特殊函数,当我们实例化对象的时候(zhangsan = Person(“zhangsan”,“男”,“19”,175)),默认实例化对象进行调用这个函数。 def init(self, name, sex, age, hight):
self对象名为  等号 前面的zhangsan,
而name, sex, age, hight 对应"zhangsan",“男”,“19”,175

Atas ialah kandungan terperinci Python3中类Class和对象object的理解(代码示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan