心之所有
想学习的可以互相沟通,互相学习,刚开始学。有什么问题可以沟通

导航

 

一、类实战

class Person(object):
	city="西安"
	def __init__(self,name,age):
		self.name=name
		self.age=age

	def show(self):
		print('my name is {0},and my age is {1},and my city is {2}'.format(self.name,self.age,self.city))

	@property
	def info(self):
		"""只读属性"""
		print('特性方法')

	@staticmethod
	def jing():
		print('静态方法')

	@classmethod
	def admin(cls):
		print('类方法')

 

# obj=Person(name='chen',age=10)
# obj.show()
# obj.info
# Person(name='chen',age=10).jing()
# Person(name='chen',age=10).admin()

  执行以上代码,结果为

 

 

 2、登陆实战

class login(object):
	def __init__(self,username,password):
		self.username=username
		self.password=password
	def login(self,nick):
		if  self.username=='chen' and self.password=='xin':
			print('我的昵称是:{0}'.format(nick))
			return 'asdf'
		else:
			print('账户密码错误')
	def Profile(self,token):
		if token=='asdf':
			print('登陆成功')
		else:
			print('请登录')

	def func(self,*args,**kwargs):
		print(args,kwargs)


objLogin=login(username='chen',password='xin')
objLogin.Profile(token=objLogin.login(nick='陈'))
objLogin.func(name='chen',nick='asd',age=2321,address='beijing')

"""
java是单继承
python是多继承
"""

  执行以上代码,结果为

 

 3、单继承,方法重写

"""
父类:基类
子类:派生类
"""
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('我的名字:{0},年龄:455,薪资:234.4'.format(self.name,self.age,self.salary))

objWork=Work(name='chen',age=199,salary=123.33)
objWork.show()
"""
当子类重写了父类的方法后,子类实例化后,调用重写的方法,优先考虑的是子类的方法
继承里面的第一个原则:
前提:单继承
原则:当实例化子类后,子类对象调用的方法和父类里面的方法重名,优先考虑子类的方法

  执行以上代码,结果为

 

 

4、多继承

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)
		self.score=score

class TextWork(Student):
	def __init__(self,name,age,score,salary):
		super().__init__(name,age,score)
		self.salary=salary

	def info(self):
		print('名字:{0},年龄:{1},分数:{2},薪资:{3}'.format(self.name,self.age,self.score,self.salary))

obj=TextWork(name='chen',age=123,score=56,salary=21312.3)
obj.info()

  执行以上代码,结果为:

 

 5、在Python中,基于MRO的解析顺序规则,就会从左到右开始查找基类,如果找到第一个匹配的属性类,就会停止查找,如果没有,那就继续查找,直到查找到符合要求的为止。MRO其实就是通过一个B线性化算法来实现的,它的核心思想为:。子类会优先于父类检查

·多个父类会根据它们在列表中的顺序被依次检查
·如果对下一个类存在两个合法的选择,只能选择第一个

class Person(object):
	def info(self):
		print('a')

	def info(self,name):
		print('a',name)

	def info(self):
		print()

class Father(Person):
	pass

class Son(Father):
	pass

print(Son.mro())

  执行以上代码,结果为:

 

 

6、登陆实战

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('123.tet','w'))

	def login(self):
		username,password=self.out()
		lists=str(json.load(open('123.tet'))).split('|')
		if username==lists[0] and password==lists[1]:
			return True
		else:
			print('请检查账户或密码')

	def profile(self):
		lists=str(json.load(open('123.tet'))).split('|')
		if self.login():
			print('欢迎访问,我的名字是{0}'.format(lists[[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:
					break
				else:continue
			except Exception as e:continue
if __name__ == '__main__':
	obj=Actual()
	obj.main()

  执行结果为:

 

posted on 2021-08-17 16:18  橙橙的橙  阅读(32)  评论(0编辑  收藏  举报