Python基础---面向对象

类:抽象的

class Person:
		name="zhangsan"  #类属性--这个类所有的实例都是一样的---共有的
		def __init__(self,inName,inAge,inWeight):
			self.name=inName
			self.age=inAge
			self.weight=inWeight
	    #实例方法
	    def eat(self):
	    	self.weight+=2
	    	print("在吃饭!---体重加了2斤",self.weight)	
	    #类方法--类调用的---实例调用也可以
	    @classmethod
	    def tell(cls)
	    	cls.nickName="xxx"
	        print("我是类方法")
	    #静态方法
	    @staticmethod
	    def  run():
	         print("---静态方法---")
	    #静态方法不需要传入self参数,类成员方法需要传入代表本类的cls参数;静态方法是无妨访问实例变量和类变量的,类成                员方法无法访问实例变量但是可以访问类变量,因此静态方法相当于类作用域里面的一个函数。
#创建实例---类名()
p1=Person('tom',20,160)
p2=Person('jack',30,150)
p1.eat()
print(p2.weight)	
		

进阶

#1- 老虎类
class Tiger:
    nickName = '老虎'
    #如果这个属性每个实例可以不一样--实例属性
    def __init__(self,inWeight):
        self.weight = inWeight

    #叫--判断该方法是不是与实例有关系--看是否涉及到实例属性
    def roar(self):
        print('我是老虎--wow---体重减少5斤!')
        self.weight -= 5
    #喂食操作
    def feed(self,food):
        if food == '肉':
            self.weight += 10
            print('恭喜,喂食正确,体重增加10斤')
        else:
            self.weight -= 10
            print('抱歉,喂食错误,体重减少10斤')

#1- 羊类
class Sheep:
    nickName = '羊'
    # __age = 20#私有的
    #如果这个属性每个实例可以不一样--实例属性
    def __init__(self,inWeight):
        self.weight = inWeight
    #叫--判断该方法是不是与实例有关系--看是否涉及到实例属性
    def roar(self):
        print('我是羊--mie---体重减少5斤!')
        self.weight -= 5
    #喂食操作
    def feed(self,food):
        if food == '草':
            self.weight += 10
            print('恭喜,喂食正确,体重增加10斤')
        else:
            self.weight -= 10
            print('抱歉,喂食错误,体重减少10斤')
#1- 房间类
class Room:
    #编号、里面的动物
    def __init__(self,inNum,inAnimal):
        self.num = inNum
        self.animal = inAnimal
# t1 = Tiger(200)
# # print(t1.weight)
# # t1.roar()
# # t1.feed('草')
# # print(t1.weight)
#
# #创建房间实例
# r1 = Room(2,t1)
#
# #敲门操作
# r1.animal.roar()
#
#
# #喂食操作
# r1.animal.feed('草')
#--------初始化10个房间实例--------
from random import randint
# print(randint(0,1))#0 1
roomList = []
for one in range(1,11):#1- 10
     if randint(0,1) == 1:
         ani = Tiger(200)
     else:
         ani = Sheep(100)
     room = Room(one,ani)
     roomList.append(room)
 import time
 开始时间 = time.time()#单位是 s  现在到1970年的一个秒数
 while True:
     当前时间 = time.time()  # 单位是 s
     if 当前时间-开始时间 > 120:
         break

    #游戏的一次完整的逻辑



#华南虎---继承
class SouTiger(Tiger):
    def __init__(self,inWeight,inName):
        Tiger.__init__(self,inWeight)#super.__init__(self,inWeight)
        self.name = inName

s1 = SouTiger(200,'moco')
print(s1.nickName,s1.weight,s1.name)
s1.roar()
print('-------------------')

继承—扩展业务

class VipCustomer:#VIP
    #
    welfare = '商品8折优惠+生日礼券'
    def __init__(self,inName,inAge):
        self.name = inName
        self.age = inAge

    def shopping(self):
        print('-----<VIP用户***江浙沪包邮>-----')

#业务扩展---需要升级SVIP-----但是要保证VIP权限
class SvipCustomer(VipCustomer):
    svipWelfare = '金融理财+白条支付'
    def __init__(self,inName,inAge,inLevel):
        VipCustomer.__init__(self,inName,inAge)
        self.level = inLevel
    def shopping(self):
        print('-----<江浙沪包邮+福利礼品>-----')

#--------1.选择登陆级别----------
userLevel = input('VIP用户请求输入: 1 ;SVIP用户请求输入: 2:')
if userLevel == '1':
    name,age = input('---<VIP用户欢迎登录>----,请求输入:用户名,年龄').split(',')
    vip1 = VipCustomer(name,int(age.strip()))
    vip1.shopping()

elif userLevel == '2':
    name,age,level= input('---<SVIP用户欢迎登录>----,请求输入:用户名,年龄,等级').split(',')
    svip1 = SvipCustomer(name,int(age.strip()),int(level.strip()))
    for one in range(0,4):# 0 1  2 3
        if one > 2:#3
            print('SVIP只要3次购物超级福利机会,已使用完毕')
            super(SvipCustomer,svip1).shopping()#使用父类的 shopping()
            #需要调用父类的被重写方法:
            # super(子类类名,子类的实例名).方法()
        else:
            svip1.shopping()#子类的shopping()

else:
    print('-----<抱歉暂时没有这个权限用户>-----')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值