# !/usr/bin/env python
# -*- coding:utf-8 -*-
class Person(object):
    city='西安市'
    # 对人定义
    def __init__(self, name, age):
        print('开始执行')
        self.name = name
        self.age = age
        # 初始化
    def show(self):
        print('my name is {0},and my age is {1}'.format(self.name, self.age, self.city))
    def __del__(self):
        print('执行结束')
        # 清理操作
obj = Person(name='admin', age=19)
print(obj.city)
print(Person(name='admin',age=19).city)
print(obj.name)
'''
类属性范畴:
1、属于类
2、属于对象
实例属性它是属于类的对象,首先对类进行实例化,得到类的对象,适用对象调用类里面的方法
'''
 
 
class Person(object):
    city = '西安市'
    def __init__(self, name, age):
        print('开始执行')
        self.name = name
        self.age = age
    def show(self):
        print('my name is {0},and my age is {1},{2}'.format(self.name, self.age, self.city))
    @property
    def info(self):
        print('特性方法:属于对象,编写特性方法')
    @staticmethod
    def Jt():
        print('静态方法:属于类,使用类名调用')
    @classmethod
    def admin(cls):
        print('类方法:属于类,使用类名调用')
objPerson = Person(name='admin', age=18)
# 普通方法
objPerson.show()
objPerson.info
# 特性方法
Person(name='admin', age=18).Jt()
# 静态方法
Person(name='admin', age=18).admin()
# 类方法
 
![]()
class Login(object):
    def __init__(self, username, password):
        self.username = username
        self.password = password
    def login(self, nike):
        if self.username == 'admin' and self.password == 'admin':
            print('我的昵称是:{0}'.format(nike))
            return 'wertyudf'
        else:
            print('你的账户或密码错误')
    def Profile(self, token):
        if token == 'wertyudf':
            print('显示具体主页内容')
        else:
            print('请登录')
    def func(self, *args, **kwargs):
        print(args, kwargs)
objLogin = Login(username='admin', password='admin')
objLogin.Profile(token=objLogin.login(nike='星德川'))
objLogin.func(name='admin', nike='星德川', age=18, address='tectivirus')
# java单继承,python多继承
 
![]()
# !/usr/bin/env python
# -*- coding:utf-8 -*-
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def show(self):
        print('name is {0},age is {1}'.format(self.name, self.age))
class Work(Person):
    def __init__(self, name, age, salary):
        # super()的方法继承父类的实例属性
        # super().__init__(name, age)
        Person.__init__(self, name, age)
        self.salary = salary
    def show(self):
        print('name is {0},age is {1},salary {2}'.format(self.name, self.age, self.salary))
objPerson = Work(name='admin', age=19, salary=1000.1)
objPerson.show()
'''
父类:基类
子类:派生类
当子类重写父类的方法,子类实例化后调用父类的方法
继承原则:
    前提:单继承
    原则:实例化子类,子类对象调用的方法和父类方法重名,优先考虑子类
'''
 
![]()
class Father(object):
    def show(self):
        print('A')
class Mother(object):
    def show(self):
        print('a')
class Son(Father, Mother):
    # pass
    def show(self):
        print('b')
son = Son()
son.show()
'''
从左到右原则:
    前提:继承多个父类,子类没有重写父类方法
    执行结果:实例化子类后调用父类方法,查询顺序从左至右,直到找到符合要求的
从上到下原则:
    前提:继承多个父类,子类重写父类方法
    执行结果:实例化子类后,调用具体方法,优先考虑子类
'''
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
class Student(Person):
    def __init__(self, name, age, score):
        super().__init__(name, age)
        # Person.__init__(self,name,age)
        self.score = score
class TestWork(Student):
    def __init__(self, name, age, score, salary):
        super().__init__(name, age, score)
        self.salary = salary
    def info(self):
        print('name:{0},age:{1},score:{2},salary:{3}'.format(self.name, self.age, self.score, self.salary))
obj = TestWork(name='admin', age=18, score=90, salary=111.1)
obj.info()
 
![]()
 
class Person(object):
    def info(self):
        print('a')
    def info(self, name):
        print('b', name)
    def info(self, name, age):
        print('c', name, age)
class Father(Person):
    pass
class Son(Father):
    pass
'''
Python中,基于MRO的解析顺序规则,从左到右开始查找基类,直到查找到符合要求的为止。
    MRO其实就是通过一个C3线性化算法来实现的,它的核心思想为:
        子类会优先于父类检查
        多个父类会根据它们在列表中的顺序被依次检查
        如果对下一个类存在两个合法的选择,只能选择第一个
'''
print(Son.mro())
Son().info(name='admin',age='19')
 
![]()
 
 
import json
import sys
class Actual(object):
    def out(self):
        username = input('请输入用户名\n')
        password = input('请输入密码\n')
        return username, password
    def register(self):
        username, password = self.out()
        temp = username + "|" + password
        json.dump(temp, open('user.md', 'w'))
    def login(self):
        username, password = self.out()
        list = str(json.load(open('user.md'))).split('|')
        if username == list[0] and password == list[1]:
            return True
        else:
            print('请检查你的账户或密码')
    def profile(self):
        list = str(json.load(open('user.md'))).split('|')
        if self.login():
            print('欢迎{0}'.format(list[0]))
    def main(self):
        while True:
            try:
                f = int(input('1、注册 2、登录 3、查看主页 4、退出\n'))
                if f == 1:
                    self.register()
                elif f == 2:
                    self.login()
                elif f == 3:
                    self.profile()
                elif f == 4:
                    exit(0)
                else:
                    continue
            except Exception as e:
                continue
if __name__ == '__main__':
    obj = Actual()
    obj.main()
 
![]()