Python 笔记10 一些魔法方法

__init__()方法:

# init初始化

class Cat:
    # 属性
    def __init__(self):
        self.name='汤姆'
        self.age=20
    # 方法
    def eat(self):
        print("吃鱼")

    def drink(self):
        print("喝牛奶")

    #介绍
    def introduce(self):
        print('大家好,我是%s,我今年%s岁'%(self.name, self.age))

tom = Cat()
tom.eat()    #吃鱼
tom.drink()   #喝牛奶


print(tom.name)  #汤姆
print(tom.age)   #20

tom.introduce()   #大家好,我是汤姆,我今年20岁

有参数的__init__()方法:

# init初始化

class Cat:
    # 属性
    def __init__(self,new_name,new_age):
        self.name=new_name
        self.age=new_age

    def introduce(self):
        print('大家好,我是%s,我今年%s岁'%(self.name, self.age))

tom = Cat('汤姆',20)
print(tom.name)  #汤姆
print(tom.age)   #20
tom.introduce()   #大家好,我是汤姆,我今年20岁

garfield = Cat('加菲猫',10)
print(garfield.name)   #加菲猫
print(garfield.age)    #10
garfield.introduce()   #大家好,我是加菲猫,我今年10岁

__str__()方法:

# init初始化

class Cat:
    # 属性
    def __init__(self,new_name,new_age):
        self.name=new_name
        self.age=new_age

    def introduce(self):
        print('大家好,我是%s,我今年%s岁'%(self.name, self.age))

tom = Cat('汤姆',20)
print(tom.name)  #汤姆
print(tom.age)   #20
tom.introduce()   #大家好,我是汤姆,我今年20岁

garfield = Cat('加菲猫',10)
print(garfield.name)   #加菲猫
print(garfield.age)    #10
garfield.introduce()   #大家好,我是加菲猫,我今年10岁

__del__()方法:

# 当一个对象 没有引用指向他时 就会被回收
# 这时会自动调用_del_()方法
class Cat:
    def __init__(self, new_name, new_age):
        print('---------init---------')
        self.name = new_name
        self.age = new_age

    def __str__(self):
        return '大家好,我是%s,我今年%s岁' % (self.name, self.age)

    #在对象被删除时,会自动被调用
    def __del__(self):
        print('----------del-------')

tom=Cat('汤姆',20)           #---------init---------
print(tom)                  # 大家好,我是汤姆,我今年20岁
                            #---------init---------
garfield=Cat('加菲猫',10)    # 大家好,我是加菲猫,我今年10岁
print(garfield)             #----------del-------
                            #----------del-------

私有属性:

# 私有权限: 在属性名和方法名 前面 加上两个下划线 __

class Person:
    def __init__(self):
        #私有属性
        self.__id ='身份证号码:xxxxxx'

    def my_name(self,password):
        if password ==123456:
            #私有属性:可以在类内部使用
            print(self.__id)
        else:
            print('不告诉你')

person = Person()

print(person.__id)  #报错

person.my_name(123456) #身份证号码:xxxxxx
person.my_name(123)    #不告诉你

私有方法:

# 类的私有属性 和 私有方法,都不能通过对象直接访问
# 但是可以在本类内部直接访问
# 私有属性 和 私有方法 往往用来处理类的内部事情。
# 不通过对象处理,起到安全作用。

class Persion:
    # 私有方法 前面同样要加__
    def __process_bug(self):
        print('专业处理程序bug')

    def process_bug_vip(self,money):
        if money>100:
            self.__process_bug()
        else :
            print('钱不够,自己解决')

cxy = Persion()
#print(cxy.__process_bug)  #报错

cxy.process_bug_vip(50)   #钱不够,自己解决
cxy.process_bug_vip(1000)  #专业处理程序bug

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值