类的属性的应用--(pytohn15)

1. 烤地瓜案例

class SweetG(object):

    def __init__(self):
        self.status = '生瓜'
        self.cookt = 0
        self.add = []

    def cook(self,t):
        self.cookt +=t
        if self.cookt < 3:
            self.status = '还是生的'
        elif self.cookt < 6 :
            self.status = '好需要一会'
        elif self.cookt <= 8 :
            self.status = '好了'
        else:
            self.status = '糊了'
    def add_g(self,t1):
        return self.add.append(t1)
    def __str__(self):
        s = self.status+'\t'+"考了"+str(self.cookt)+"分"
        s += '使用了什么调料 \n'
        for i in self.add:
            s +=(i+'\n')
        return  s
dg = SweetG()
dg.cook(2)
print(dg)
dg.cook(2)
dg.add_g('蜂蜜')
print(dg)

dg.cook(4)
dg.add_g('juce')
print(dg)

2. 类的复合应用

设计一个类的时候,类中包含其他类的对象

'''
类的复合
人有一条狗,想听狗叫
'''

class Person(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def add_pet(self,pet):
        self.pet = pet
    def listen_dog(self,n):
        self.pet.bark(n)
    def __str__(self):
        return self.name+str(self.age)

class Dog(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def bark(self,n):
        for  i in range(n):
            print('won won ....')

tom = Person('tom',12)
print(tom)
tom.add_pet(Dog('xiaoxioa',4))
tom.listen_dog(10)

3. 存放家具的案例

'''
向房子中添加家具
'''

class Furniture(object):
    def __init__(self,name,area):
        self.name = name
        self.area = area
    def __str__(self):
        return f'家具:{self.name} 占用{self.area}平方米'

class House(object):
    def __init__(self,address,area):
        self.address = address
        self.area = area
        self.freearea = area * 0.3
        self.futniture = []
    def add_furniture(self,fur):

        if fur.area < self.freearea:
            self.freearea -= fur.area
            self.futniture.append(fur)
            print(f'成功的添加了{fur.name},剩余的空间大小{self.freearea}')
        else:
            print(f'剩余的空间不足,无法添加{fur.name}',end='\t')
            print(f'剩余的空间大小{self.freearea}平方米')
    def __str__(self):
        s = '我的house房子的地址'+self.address+'\t占地的面积'+str(self.area)+'\n'
        # s += '添加的家具有:\t'
        if len(self.futniture)==0:
            s += '还没有添加家具'
            return s
        else:
            s += '添加的家具有:\n'
            for c in self.futniture:
                s += str(c)+'\n'
            return s

house = House('长安街1号',120)
# print(house)
house.add_furniture(Furniture('沙发',12))
house.add_furniture(Furniture('沙发2',12))
house.add_furniture(Furniture('沙发3',12))
print(house)

注意的事项:在打印的时候,要进行字符串的转换,因为此时的fur家具变量是一个对象<class ‘main.Furniture’>,不是单纯的字符串,不能进行字符串的家操作

4.类的私有属性和方法

默认不加任何修饰的就是共有的属性和方法
在前边添加__表示私有的,私有属性确保了数据的安全,可以通过编写set、get方法来获取私有属性,而不是直接通过变量名就可以直接的访问
案例:

class Bank(object):
    def __init__(self,name,money):
        self.__name = name
        self.__money = money
    # 姓名一旦创建就不可以修改,所以只提供get方法
    def get_name(self):
        return self.__name
    def get_money(self):
        return self.__money
    def set_money(self,jine):
        if isinstance(jine,int):
            self.__money=jine
        else:
            print('不能更改')
    def show(self):
        print(f'姓名:{self.__name} \t 余额:{self.__money}')


jack = Bank('jack',12222)
# 在类的外部不可以访问类的私有属性
# print(jack.name) AttributeError: 'Bank' object has no attribute 'name'
#这个时候我们可以只用方法来获取
# print(jack.get_name())
# jack.show()
jack.set_money(22222)
jack.show()

# 私有属性的原理,但是不会使用
# print(jack._Bank__name)

私有方法:通过类中共有的方法来进行调用

class Download(object):
    def __init__(self):
        self.__list=[]
    def add_task(self,url):
        self.__list.append(url)
        self.__download(url)
    def __download(self,url):
        print(f'通过地址{url}下载中...')

s = Download()
s.add_task('www.baidu.com')

# 私有的方法在外部不可以使用的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值