做网站的关键词怎么判断好不好wordpress中文显示成问号
做网站的关键词怎么判断好不好,wordpress中文显示成问号,广州的广告公司有哪些,成都seo手段面向对象 1.初识对象1.1理解使用对象完成数据组织的思路 2.成员方法2.1类的定义和使用语法2.2成员方法的使用 3.类和对象4.构造方法4.1使用构造方法向成员变量赋值 5.其他内置方法5.1__str__字符串方法5.2__lt__小于符号比较方法5.3__le__小于等于比较符号5.4__eq__比较运算符实… 面向对象 1.初识对象1.1理解使用对象完成数据组织的思路 2.成员方法2.1类的定义和使用语法2.2成员方法的使用 3.类和对象4.构造方法4.1使用构造方法向成员变量赋值 5.其他内置方法5.1__str__字符串方法5.2__lt__小于符号比较方法5.3__le__小于等于比较符号5.4__eq__比较运算符实现方法 6.封装6.1封装的概念6.2私有成员的使用 7.继承7.1继承的概念7.2复写和使用父类成员 8.类型注解8.1变量的类型注解8.2函数(方法)的类型注解8.3 Union类型 9.多态 1.初识对象
1.1理解使用对象完成数据组织的思路
思考 学校开学要求学生填写自己的基础信息一人发一张白纸让学生填写 改为使用登记表打印出来让学生自行填写 在程序中简单使用变量来记录学生信息 使用变量记录数据太乱了。 如果程序中也和生活中一样
可以设计表格可以将设计的表格打印出来可以将打印好的表格供人填写内容 那么数据的组织就非常方便了。
使用对象组织数据 在程序中可以做到和生活中那这样设计表格生产表格和填写表格的组织形式的 1.在程序中设计表格我们称之为设计类(class)
class Studen:name None #记录学生姓名2.在程序中打印生产表格我们称之为:创建对象
# 基于类创建对象
stu1 Student()
stu2 Student()3.在程序中填写表格我们称之为:对象属性赋值
stu_1.name 周杰轮 # 为学生1对象赋予名称属性值
stu_2.name 林军杰 # 为学生2对象赋予名称属性值2.成员方法
2.1类的定义和使用语法
class 类名称 class是关键字表示要定义类了 类的属性 类的属性即定义在类中的变量成员变量 类的行为 类的行为即定义在类中的函数成员方法
创建类对象的语法 对象 类名称()
class Student:name None # 学生的姓名age None # 学生的年龄def say_hi(self):print(fHi大家好我是{self.name})
stu Student()
stu.name 周杰轮
stu.say_hi() # 输出: Hi大家好我是周杰轮从上述代码中可以得出
不仅可以定义属性来记录数据也可以定义函数用来记录行为类中定义的属性变量我们称之为成员变量类中定义的行为函数我们称之为成员方法
定义在类内部的函数称之为方法
2.2成员方法的使用
在类中定义成员方法和定义函数基本一致但仍有细微的区别
def 方法名(self,形参1 ....形参N):方法体可以得出在方法定义的参数列表中有一个:self关键字self关键字是成员方法定义的时候必须填写的。
它用来表示类对象自身的意思当我们使用类对象调用方法的是self会自动被Python传入在方法内部想要访问类的成员变量必须使用self
注意事项 self关键字尽管在参数列表中但是传参的时候可以忽略它
class Student:name Nonedef say_hi(self):print(fHello,大家好)def say_hi2(self,msg):print(f大家好!{msg})
stu Student()
stu.say_hi() # 调用的时候无需传参
stu.say_hi2(很高兴认识大家) # 调用的时候需要传msg参数在传入参数的时候self是透明的可以不用理会他。
3.类和对象
现实世界的事务和类 类和对象描述现实事务 程序中通过类来描述 基于类创建对象
4.构造方法
4.1使用构造方法向成员变量赋值
class Student:name None # 名称age None # 年龄tel None # 手机号
stu1 Student()
stu1.name 周杰轮
stu1.age 31
stu1.tel 18012340000stu2 Student()
stu2.name 周杰轮
stu2.age 31
stu2.tel 18012340000思考 上述代码中为对象的属性赋值需要依次进行略显繁琐。 有没有更加高的方式一行代码完成 这个括号能否像函数(方法)那样通过传参的形式对属性赋值 使用构造方法: __init__()
在创建类对象构造类的时候会自动执行在创建类对象构造类的时候将传入参数自动传递给__init__方法使用
class Student:name None # 可以省略age None # 可以省略tel None # 可以省略def __init__(self,name,age,tel)self.name nameself.age ageself.tel telprint(Student类创建了一个对象)
stu Student(周杰轮,31,18500000000)构造方法注意事项
构造方法名称init_千万不要忘记init前后有两个下划线构造方法也是成员方法不要忘记在参数列表中提供:self在构造方法内定义成员变量需要使用self关键字 这是因为变量是定义在构造方法内部如果要成为成员变量需要用self来表示 练习
class Student:# 构造方法def __init__(self):self.name input(请输入学生姓名)self.age int(input(请输入学生年龄))self.address input(请输入学生地址)for i in range(1, 11):print(f当前录入第{i}位学习信息总共需录入10位学习信息)stu Student()print(f学生{i}信息录入完成信息为【学生姓名{stu.name}, 年龄{stu.age}, 地址{stu.address})5.其他内置方法
5.1__str__字符串方法
class Student:def __init__(self,name,age):self.name nameself.age age
stu Student(周杰伦,25)
print(stu)
print(str(stu))
# 输出
__main__.Student object at 0x000001E952802150
__main__.Student object at 0x000001E952802150当类对象需要被转换为字符串时会输出如上结果(内存地址) 内存地址没多大用我们可以通过__str__方法控制类转换为字符串的行为。
class Student:def __init__(self,name,age):self.name nameself.age agedef __str__(self):return fStudent类对象name{self.name},age{self.age}stu Student(周杰伦,25)
print(stu)
print(str(stu))
# 输出
Student类对象name周杰伦,age25
Student类对象name周杰伦,age255.2__lt__小于符号比较方法
class Student:def __init__(self,name,age):self.name nameself.age age
stu1 Student(周杰伦,25)
stu2 Student(林俊杰,30)
print(stu1 stu2)直接两个对象比较是不可以的但是在类中实现__lt__方法即可同时完成小于符号和大于符号 两种比较
class Student:def __init__(self,name,age):self.name nameself.age agedef __lt__(self, other):return self.age other.age
stu1 Student(周杰伦,25)
stu2 Student(林俊杰,30)
print(stu1 stu2)
# 返回值 True或者False5.3__le__小于等于比较符号
class Student:def __init__(self,name,age):self.name nameself.age agedef __le__(self, other):return self.age other.age
stu1 Student(周杰伦,25)
stu2 Student(林俊杰,30)
print(stu1 stu2) # 结果 True
print(stu1 stu2) # 结果 False5.4__eq__比较运算符实现方法
class Student:def __init__(self,name,age):self.name nameself.age agedef __eq__(self, other):return self.age other.age
stu1 Student(周杰伦,25)
stu2 Student(林俊杰,30)
print(stu1 stu2)不实现__eq__方法对象之间可以比较但是是比较内存地址也即是不同对象比较一定是False结果实现了__eq__方法就可以按照自己的想法来决定2个对象是否相等了
6.封装
6.1封装的概念
封装表示的是将现实世界事物的
属性行为
封装到类中描述为
成员变量成员方法
从而完成程序对现实世界事物的描述
6.2私有成员的使用 私有成员的语法
私有成员的变量变量名以__开头2个下划线私有成员的方法方法名以__开头2个下划线
class Phone:IMEI None # 序列号producer None # 厂商__current_voltage 0.5 # 当前电压 私有成员变量def call_by_5g(self):print(5g通话已开启)def __keep_single_core(self): # 私有成员方法print(让cpu以单核模式运行以节省电量)
phone Phone()
phone.call_by_5g()注意事项
私有方法无法直接被类对象使用私有变量无法赋值也无法获取值
使用私有成员 私有成员无法被类对象使用但是可以被其他的成员使用
class Phone:IMEI None # 序列号producer None # 厂商__current_voltage 1 # 当前电压 私有成员变量def call_by_5g(self):if self.__current_voltage 1:self.__keep_single_core()print(5g通话已开启)def __keep_single_core(self): # 私有成员方法print(让cpu以单核模式运行以节省电量)
phone Phone()
phone.call_by_5g()
# 输出
让cpu以单核模式运行以节省电量
5g通话已开启练习
class Phone:__is_5g_enable False # True表示5g开启False表示5g关闭def __check_5g(self):if self.__is_5g_enable True:print(5g开启)else:print(5g关闭使用4g网络)def call_by_5g(self):self.__check_5g()print(正在通话中)
phone Phone()
phone.call_by_5g()
# 输出
5g关闭使用4g网络
正在通话中7.继承
7.1继承的概念 思考 如果你是设计师你会如何选择 1.每一代新款手机都从零开始设计 2.基于老款的设计修修改改 设计新手机基于老款的基础上进行修改
class Phone:IMEI Noneproducer ITCASTdef call_by_4g(self):print(4g通话)class Phone2024(Phone):face_id 10001def call_by_5G(self):print(2024新功能5g通话)单继承 语法
class 类名(父类名)类内容体多继承
语法
class 类名(父类1父类2...父类3)类内容体class Phone:IMEI Noneproducer ITCASTdef call_by_4g(self):print(4g通话)
class NFCReader:nfc_type 第五代producer HMdef read_card(self):print(NFC读卡)def write_card(self):print(NFC写卡)
class RemoteControl:rc_type 红外遥控def control(self):print(红外)
class Myphone(Phone,NFCReader,RemoteControl):passphone Myphone()
print(phone.producer)
phone.call_by_4g()
phone.read_card()
# 输出
ITCAST
4g通话
NFC读卡
父类的品牌是ITCAST
父类的5g通话
ITCAST7.2复写和使用父类成员
复写 子类继承父类成员属性和成员方法如果对其“不满意”那么可以进行复写。 即在子类重新定义同名的属性或方法即可。
class Phone:IMEI Noneproducer ITCASTdef call_by_5g(self):print(父类的5g通话)
class Myphone(Phone):producer HMdef call_by_5g(self):print(子类的5g通话)phone Myphone()
print(phone.producer)
phone.call_by_5g()
# 输出
HM
子类的5g通话调用父类成员
class Phone:IMEI Noneproducer ITCASTdef call_by_5g(self):print(父类的5g通话)
class Myphone(Phone):producer HMdef call_by_5g(self):# 方式1 调用父成员print(f父类的品牌是{Phone.producer})Phone.call_by_5g(self)# 方式2 调用父类成员print(f父类的品牌是{super().producer})super().call_by_5g()print(子类的5g通话)注意事项 方式1调用父类成员
使用成员变量父类名.成员变量使用成员方法父类名.成员方法(self)
方式2调用父类成员
使用成员变量super().成员变量使用成员方法super().成员方法()
8.类型注解
8.1变量的类型注解
主要功能
帮助第三方IDE工具如PyCharm对代码进行类型推断协助做代码提示帮助开发者自身对变量进行类型注释
支持
变量的类型注解函数方法形参列表和返回值的类型注解
方法1
# 基础容器类型注解
my_list :list [1,2,3]
my_tuple: tuple (1,2,3)
mu_dict: dict {itheima:666}
# 容器类型详细注解
my_list: list[int] [1,2,3]
my_tuple: tuple[int,str,bool] (1,itheima,True)
my_dict: dict[str,int] {itheima:666}
# 类对象类型注解
class Student:pass
stu: Student Student()方法2
# 在注释中进行类型注解
var_1 random.randint(1,10) # type: int
var_2 json.loads({name:zhangsan}) # type: dict[str,str]
def func():return 10
var_3 func() # type: int 注意类型注解只是提示性的并非决定性的。数据类型和注解类型无法对应也不会导致错误
8.2函数(方法)的类型注解
形参注解
def add(x:int,y:int):return x y
add()返回值注解
def func(data: list) - list:return data
print(func())8.3 Union类型 from typing import Union
my_list: list [Union[int,str]] [1,2,heima]
def func(data: Union[int,str]) -Union[int,str]:pass9.多态
多态指的是多种状态。完成某个行为是使用不同的对象会得到不同的状态。 多态常作用在继承关系上.
比如
函数(方法)形参声明接收父类对象实际传入父类的子类对象进行工作
即:
以父类做定义声明以子类做实际工作用以获得同一行为, 不同状态
抽象类(接口) 举例
class AC:def cool_wind(self):制冷passdef hot_wind(self):制热passdef wring_l_r(self):左右摆风pass
class Midea_AC(AC):def cool_wind(self):print(美的空调核心制冷科技)def hot_wind(self):print(美的空调电热丝加热)def wring_l_r(self):print(美的空调无风感左右摆风)
class GREE_AC(AC):def cool_wind(self):print(格力空调变频省电制冷)def hot_wind(self):print(格力空调电热丝加热)def wring_l_r(self):print(格力空调静音左右摆风)def make_cool(ac:AC):ac.cool_wind()midea Midea_AC()
gree GREE_AC()make_cool(midea)
make_cool(gree)# 输出
美的空调核心制冷科技
格力空调变频省电制冷
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88373.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!