python——第十六天

面向对象------继承

class RichMan(object):

def init(self):

self.money = 1000000000

self.company = "阿里巴巴"

self.__secretary = "小蜜"

def speak(self):

print(f"我对钱不感兴趣,我最后悔的事,就是创建了{self.company}")

def __self_info(self):

print("我有些私密的事,不想让别人")

class Son(RichMan):

pass

def init(self, name, age):

self.name = name

self.age = age

def tell(self):

print("我是一个富二代")

def speak(self):

print("各位叔叔伯伯,请多多关照")

if name == 'main':

s = Son("张三", 16)

print(s.name)

print(s.age)

print(s.money)

print(s.company)

s.speak()

s.__self_info()

s = Son()

s.speak()

面向对象的特征------封装

class User(object):

def init(self, name, age, password, nickname):

将属性私有化

self.__name = name

self.age = age

self.password = password

self.nickname = nickname

def login(self, name, password):

if name == self.__name and password == self.password:

print("登录成功")

self.__show_info()

else:

print("登录失败")

self.__show_info()

def __show_info(self):

该方法是私有化方法,所以只能在该类内部,外界访问访问

print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

def get_name(self):

return self.__name

def set_name(self, name):

self.__name = name

使用property全局函数,二次封装name属性!!!

name = property(get_name, set_name)

if name == 'main':

u1 = User("张三", 16, "123456", "法外狂徒")

print(dir(u1))

print(u1.__name)

u1.__name = "liujianhong"

u1.login("liujianhong", "123456")

print(u1.__name)

print(u1.get_name())

u1.set_name("liujianhong")

print(u1.get_name())

u1.login("liujianhongafdas", "123456")

u1.__show_info()

print(u1.name)

u1.name = "李四"

print(u1.name)

print(u1.get_name())

面向对象------封装的其他写法

class User(object):

def init(self, name, age, password, nickname):

将属性私有化

self.__name = name

self.age = age

self.password = password

self.nickname = nickname

def login(self, name, password):

if name == self.__name and password == self.password:

print("登录成功")

self.__show_info()

else:

print("登录失败")

self.__show_info()

def __show_info(self):

该方法是私有化方法,所以只能在该类内部,外界访问访问

print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

@property

def name(self):

return self.__name

@name.setter

def name(self, name):

self.__name = name

if name == 'main':

u1 = User("张三", 16, "123456", "法外狂徒")

print(dir(u1))

print(u1.__name)

u1.__name = "liujianhong"

u1.login("liujianhong", "123456")

print(u1.__name)

print(u1.get_name())

u1.set_name("liujianhong")

print(u1.get_name())

u1.login("liujianhongafdas", "123456")

u1.__show_info()

print(u1.name)

u1.name = "李四"

print(u1.name)

面向对象的特性及相关知识

面向对象的三大特征:

|--封装

|--继承

|--多态

封装:

在面向对象中,封装往往有两层含义:

1、类会将类成员封装在类内部

2、类的属性,私有化,不让外界访问,如果外界需要访问,则提供对于的公开的方法或方式

python如何私有化属性或者方法:

1、正常命名的属性或者方法

name

age

speak()

2、双下划线的属性或者方法(魔法属性或者方法 double line methon/attribute)

doc

int()

eq

init()

3、前面加一个下划线的属性或者方法

_name

_age

_nickname

这样定义的无法使用 from xxx import* 这种导入方式导入到其他模块中

4、封装

__属性名称或者方法名称

class User(object):

def init(self,name,age,password,nickname) :

#将属性私有化#

self.__name=name

self.age=age

self.password=password

self.nickname=nickname

def login(self,name,password):

if name==self.__name and password==self.password:

print("登录成功")

self.__show_info()

else:

print("登录失败")

self.__show_info()

def __show_info(self):

#该方法是私有化方法,所以只能在该类内部,外界无法访问

print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

def get_name(self):

return self.__name

def set_name(self,name):

self.__name=name

if name=='main':

u1=User("zhangsan",16,"123456","法外")

print(u1.get_name())

u1.set_name("hjt")

print(u1.get_name())

u1.login("hjt","123456")

继承:

在面向对象中,存在了类继承类的特征,这个就是我们说的------继承

父类:被继承的类,被称为父类,也被称为超类(super class)

子类:继承父类的类,被称为子类

方法重写、方法覆盖(override、overwrite)

在继承的关系中,如果子类继承父类中某一个或者某些方法时,如果想要修改原有方法

这需要重写该方法

函数重载(overload):

相关推荐
Wx-bishekaifayuan5 分钟前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂34 分钟前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师1 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan1 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe1 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
WeiXin_DZbishe1 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
imgsq3 小时前
电子学会考级 vs CCF-GESP:两套少儿编程考级怎么选
python·青少年编程
Smoothcloud润云3 小时前
PyTorch推理服务动态批处理实战:兼顾吞吐与延迟
人工智能·pytorch·python·深度学习·ai·gpu算力