Python第十天

私有化

class A():
    def __init__(self,name,age):
        self.name=name
        self._age=age#私有化属性,外部不能直接访问
    def shown(self):
        print(self._age)
    def __shou(self):
        print('w134')
    def shou__(self):
        print('h170')

t=A('迪欣欣',19)

print(t.name)
# print(t._age) 私有化属性无法从外部直接访问
t.shown() #通过对象未私有化的方法访问

#私有调用

class Sdf():
    def ret(self):
        return self.__age       #返回私有属性的值
    def xx(self,age):
        if 0<age<120:
            self.__age=age      #满足条件时将变量age的值赋予私有属性_age
        else:
            self.__age=0        #不满足时,将私有属性__age的值变成0

t=Sdf()
t.xx(12)
print(t.ret())
t.xx(134)
print(t.ret())

class B():
    def getName(self,name):
        if len(name)<5:
            self.new_name=name
        else:
            self.new_name=name[0:5]
    def setName(self):
        return self.new_name

t=B()
t.getName('qwertyu')
print(t.setName())
t.new_name='123456789'
print(t.setName())

#查询类的属性

class A():
    def setAge(self,age):
        self.__age=age
        self.name='黄月英'
    def getAge(self):
        return self.__age

t=A()
t.setAge(29)
print(t.getAge())
t._age=19
print(t._age)
print(t._A__age)
t._A__age=12
print(t._A__age)
print(t.__dict__)

#类的继承

class People():
    def dance(self):
        print('Dd')
class A():
    def xx(self):
        print('xx')
class Student(People,A):
    def sing(self):
        print('Ss')

zs=Student()
zs.dance()
zs.sing()
zs.xx()

重载

class Animal():
    def __init__(self,name,gender,age):
        self.name=name
        self.gender=gender
        self.age=age
    def eat(self):
        print('吃饭')
    def sleep(self):
        print('睡觉')
    def sound(self): #被重载
        print('What the fox say?',end=' ')

class Dog(Animal):
    def sound(self): #重载,与父类同名的方法
        super().sound()#调用父类方法
        print('汪汪汪')
class Cat(Animal):
    def sound(self):
        super().sound()  # 调用父类方法
        print('喵喵喵')

g=Dog('哈士奇','雄性',1)
g.eat()
g.sleep()
g.sound()

c=Cat('挪威森林猫','雌性',2)
c.eat()
c.sleep()
c.sound()
# print(Dog.__bases__)
# print(Animal.__bases__)
# a=Animal('QD','QWE',9)
# a.sound()

几类特殊的继承

# class A():
#     def __init__(self,x):
#         self.x=x
#
# class B(A):
#     def __init__(self,x,y):
#         self.x=x
#         self.y=y
#     def shown(self):
#         print(self.x)
#
# t=B(1,2)
# t.shown()

# class A():
#     def __init__(self,x):
#         self.x=x
#
# class B(A):
#     def shown(self):
#         print(self.x)
#
# t=B(1)
# t.shown()


# class A():
#     pass
#
#
# class B(A):
#     pass
#
#
# t = B()

class A():
    pass

class B(A):
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def shown(self):
        print(self.x)

t=B(1,2)
t.shown()

类,属性的创建

# class A():
#     pass
#
# class B(A):
#     pass
#
# A.ww=123
# print(A.ww)
# print(B.ww)

# class A():
#     a=1
#     pass
#
# class B(A):
#     a=2
#     pass
#
# print(A.a)
# print(B.a)
# print(A.a)

class A():
    a=1
    pass

class B(A):

    pass
B.a=4
print(A.a)
print(B.a)

类的访问

class A():
    num=4
    a=90

class B(A):
    num=10



t=B()
print(t.num)
print(super(B,t).num)#访问对象t的类B的父类的属性num
print(super(B,t).a)#访问对象t的类B的父类的属性a


继承调用顺序

class A():
    def a1(self):
        print('a1')
    def t1(self):
        print('at1')

class B():
    def b1(self):
        print('b1')
    def t1(self):
        print('bt1')

class C(A,B):
    def c1(self):
        print('c1')

a=C()
a.t1()#当调用的方法在多个不同父类中存在相同名字的方法时,根据集成时括号内写的先后顺序调用
print(C.mro())


钻石继承

class A():
    def __init__(self):
        print('A开始')
        print('A结束')
class B(A):
    def __init__(self):
        print('B开始')
        super().__init__()
        print('B结束')

class C(A):
    def __init__(self):
        print('C开始')
        super().__init__()
        print('C结束')

class D(B,C):
    def __init__(self):
        print('D开始')
        super().__init__()
        print('D结束')

t=D()
print(D.mro())

多态

class Dog():
    def sound(self):
        print('汪!')

class Cat():
    def sound(self):
        print('喵~')

class Pig():
    def sound(self):
        print('哼哼哼')

def xx(x):
    x.sound()

d=Dog()
c=Cat()
p=Pig()
xx(d)
xx(c)
xx(p)
print(xy(0))

作业

class Dog(object):
    def __init__(self, name):
        self.name = name

    def game(self):
        print('%s 玩耍'% self.name)

class Xiaotiandog(Dog):
    def game(self):
        print('%s 飞走了'% self.name)

class Humen(object):
    def __init__(self,name):
        self.name=name
    def game_with_dog(self,dog):
        print('%s %s'% (self.name,dog.name))
        dog.game()


xt_dog = Xiaotiandog('哮天犬')

els=Humen('二郎神')
els.game_with_dog(xt_dog)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值