类实战

时间:2021-08-17
本文章向大家介绍类实战,主要包括类实战使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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()

原文地址:https://www.cnblogs.com/xdcjk/p/15152880.html