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()