一、进阶语法学习
Python是一种面向对象的语言,所以今天学习它的面向对象思想。在Python中,有一句话叫作“一切皆对象”。
# Python也是一种面向对象的程序语言
"""
# 定义格式:
# class 类名(父类):
# 属性
# 方法
# 注意类名必须大写
"""
class Bank():
title = "招商银行"
def motto(self):
return "宾至如归"
# 操作类的属性与方法
# 格式:
# 对象.属性
# 对象.方法
bank = Bank()
print(bank.title)
print(bank.motto())
# 类的构造方法__init__(self)
class Bank():
title = "招商银行"
def __init__(self,user_name,balance):
self.name = user_name
self.money = balance
def get_money(self):
return self.money
def motto(self):
return "宾至如归"
bank1 = Bank("hanli",10000)
print(bank1.name,f"您的存款余额为{bank1.money}")
# 类的封装
class Bank():
def __init__(self,username):
# 属性私有化
self.__rate = 30
self.__service = 0.01
self.name = username
self.__money = 0
self.__title = "招商银行"
# 方法私有化
def __charge(self,dolor):
return int(dolor*self.__rate*(1-self.__service))
def get_money(self,money,name):
self.__money = money
self.name = name
"""
# 解释说明
# 私有化,直接在属性和方法前面加__就可以了
# 经过私有化后,类的属性无法被外部修改
"""
# 类的继承
# Python中的继承和C++差不多,它也可以多继承
class New_bank(Bank):
pass
new_bank = New_bank("zx")
new_bank.get_money(1000,"zx")
"""
# 解释说明
# 子类继承父类,如果有方法重名,调用时以子类中的方法为主,
# 如构造方法__init__,子类没有时,再去找父类的方法。
# pass后面可以继续写,不会影响后面的程序。
"""
# 类的多型
# 相同的函数名,放入不同的参数会得到不同的结果,从而完成功能的多样化
class Animal:
def __init__(self,animal_name):
self.name = animal_name
def which(self):
return "The animal "+self.name.title()
def action(self):
return "sleeping"
class Cat(Animal):
def __init__(self,cat_name):
# 子类调用父类的方法
super().__init__(cat_name.title())
def action(self):
return "running in the room"
class Monkey:
def __init__(self,monkey_name):
self.name = "猴子"+monkey_name.title()
def which(self):
return self.name
def action(self):
return "running in the forset"
def doing(obj):
print(obj.which(),"is",obj.action())
animal = Animal("哈哈")
print(animal.name)
# Python支持多继承
# 定义格式:
# class 类名(类名1,...)
class A:
pass
class B:
pass
class C:
pass
class D(A,B,C):
pass
"""
# 解释说明
# D同时继承了A,B,C三个父类
# 多继承解决了功能的全面性
"""
# type和instance
# type方法查看一个对象的类型
# instance方法判断一个对象是否属于一个类
# 使用格式:type(对象名);instance(对象,类)
# 类的特殊属性或方法
# 对象.__doc__可以获取函数说明的文档信息
if __name__ == '__main__':
pass
# __name__代码自己执行,主程序就是main,如果是导入去其他包,就不是main
# __str__()可以返回易读取的字符串
# __repr__()可以返回指定格式的字符串,可以自定义,它和__str__()差不多