二十八、Python基础语法(面向对象-下)

一、self

从函数的语法上来看, self 是形参 , 是一个普通的参数,那么在调用的时候,就需要传递实参值。从调用上看, 我们没有给 self 这个形参传递实参值, 但是 Python 解释器会自动的将调用这个方法的对象,作为实参值传递给 self。

class Dog:

    def eat(self):
        print('小狗吃骨头')
        print(id(self))


dog1 = Dog()
print(id(dog1))
dog1.eat()
print('*' * 20)
dog2 = Dog()
print(id(dog2))
dog2.eat()

运行结果:

总结:self 就是调用这个方法的对象

二、属性

属性是每个对象都有的,每个对象都会由内存空间来保存自己的属性学习,属性可以在类内部处理,也可以在类外部处理,不是是在内部还是外部,都是通过对象操作的。

获取对象的属性:对象.属性名

添加或者修改属性:对象.属性名 = 值

class Dog:

    def eat(self):
        print(f'小狗{self.name}吃骨头')


dog1 = Dog()
# 添加属性
dog1.name = '旺财'
dog1.eat()
print('*' * 20)
dog2 = Dog()
# 添加属性
dog2.name = '阿黄'
dog2.eat()

运行结果:

 

注意:一般不在类外部操作对象的属性,添加属性的操作,都写在 __init__ 方法里面

三、魔法方法

魔法方法:在Python 中有一类方法,以两个下划线开头, 两个下划线结尾, 并且在满足某个条件的情况下会自动调用。

1.__init__ 初始化方法

__init__用来给对象添加属性,添加的所有的属性都写在这个方法中,在创建对象时,会自动调用。

class Dog:

    def __init__(self):
        print('我被调用了')


Dog()  # 创建对象,会调用
dog1 = Dog()  # 会
dog2 = dog1  # 不会
class Dog:

    # 给对象添加属性
    def __init__(self, name):
        self.name = name

    def eat(self):
        print(f'小狗{self.name}吃骨头')


dog1 = Dog('旺财')
dog1.eat()
print('*' * 20)
dog2 = Dog('阿黄')
dog2.eat()

运行结果:

2.__str__ 方法

__str__作用自定义返回对象的属性说明信息,print(对象) 时,会自动调用 __str__ 方法,会输出__str__方法的返回值。

class Dog:

    # 给对象添加属性
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f'这个对象包含一个属性,名称是{self.name}'

    def eat(self):
        print(f'小狗{self.name}吃骨头')


dog1 = Dog('旺财')
print(dog1)  # 这个对象包含一个属性,名称是旺财
print('*' * 20)
dog2 = Dog('阿黄')
print(dog2)  # 这个对象包含一个属性,名称是阿黄

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值