Python:self、

Python:self、,第1张

Python:self、
"""
程序运行的机制,会先运行顶格写的代码

初始化:也叫实例化,即通过定义的类得到一个具体的对象

__init__(是个实例方法)的作用:用来定义实例属性(不是类属性)。

定义实例属性的方式有两种
在类里面定义实例属性时:需要加上self,即self.实例属性=形式参数
在类外面定义实例属性时:对象名.属性


self : 表示在类里面,对象本身,是个占坑的符号,代表对象自己本身。
cls:表示类本身

"""

class Animal:
    height='1.5' #类属性

    def __init__(self,name):
        #对象的初始化过程,也叫实例化过程,定义实例属性
        #self.属性:定义的是实例属性
        #self.属性=形式参数,形式参数和对象的实际参数是一一对应的
        self.name=name #传入的属性必须设置成实例属性才能被对象访问到,即self.实例属性=形式参数

    @classmethod
    def animal_color(cls):
        #类方法可以调用类属性,不能调用实例属性和实例方法
        print('狗狗的身高%s' % cls.height) #类方法中可以调用类属性
        # print(cls.dog_feature()) #报错,类方法中不可以调用实例方法和属性

    def dog_feature(self): #实例属性中的self的作用:可以通过self调用类的属性
        #实例方法中可以调用其他实例方法、实例属性,类方法
        print('%s 的身高为 %s' % (self.name,self.height)) #调用类属性
        self.food() #调用实例方法
        self.animal_color() #调用类方法

    def food(self):
        print('吃骨头')
        self.toy='球球' #新增一个实例属性


#实例方法的调用
dog=Animal('柯基')  #实例化时会首先调到 __init__ 方法
# print(dog.name)
dog.dog_feature()

# 类方法的调用
Animal.animal_color()

# 后天定义的实例属性
# 方法一:
dog=Animal('斗牛')
dog.tail='没有尾巴'  #实例化对象后添加属性
print(dog.tail)

# 方法二:
dog=Animal('哈士奇')
# print(dog.toy) #报错,
# 没法直接访问后天定义的属性,需要在访问完实例方法后,才能访问该实例方法中定义的属性,
# 因为程序会先运行顶格写的代码,里面的代码不会被执行
dog.food()
print(dog.toy)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5658514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存