#面向对象

反射

class Black:

    ture = 'Ugly'

    def __init__(self, name, addr):
        self.name = name
        self.addr = addr

    # def sell_house(self):
    #     return_value = '%s 正在卖房子' % self.name
    #     return return_value

    def rent_house(self):
        return_value = '%s 正在租房子' % self.name
        return return_value


c1 = Black('alex', '北京')

if hasattr(c1, 'sell_house'):  # 判断c1后的的方法,如果有返回True
    func = getattr(c1, 'sell_house')
    print(func())
else:
    print('没有此方法')
    pass

多态

# 多态
class H2o:
    def __init__(self, status, c):
        self.status = status
        self.c = int(c)

    def main(self):
        if 100 > self.c > 0:
            print('水在%s度下是水' % self.c)
        if self.c >= 100:
            print('水在%s度下是蒸汽' % self.c)
        if self.c <= 0:
            print('水在%s度下是冰' % self.c)


class Water(H2o):
    pass


class Ice(H2o):
    pass


class Steam(H2o):
    pass


w = Water('水', 50)
i = Ice('冰', -20)
s = Steam('蒸汽', 300)

w.main()
i.main()
s.main()

授权

import time

class Open:

    def __init__(self, filename, mode='r', encoding='utf8'):
        self.filename = filename
        self.mode = mode
        self.encoding = encoding
        self.file = open(filename, mode, encoding=encoding)

    def write(self, line):
        t = time.strftime('%Y-%m-%d %X')
        self.file.write('%s %s' % (t, line))

    def __getattr__(self, item):
        return getattr(self.file, item)


open1 = Open('授权/a.txt', 'r+')
open1.write('1\n')
open1.write('2\n')
open1.write('3\n')
# open1.write('4\n')
# open1.seek(0)1
# print(open1.read())

封装

class People:
    __stat = 'earth'

    def __init__(self, people_id, people_name):
        self.id = people_id
        self.name = people_name

    def get(self):
        return_value = '我是%s,ID为:%s,' % (self.name, self.id)
        return return_value


p1 = People('001', 'alex')

# print(p1.get())


class S:

    def __init__(self, long, wide, high):
        self.__long = long
        self.__wide = wide
        self.__high = high

    def s(self):
        return self.__long * self.__wide

    def long(self):
        return self.__long

    def wide(self):
        return self.__wide


s1 = S(3, 2, 2)
print(s1.s())