县门户网站建设方案,网页和网站的不同,软件技术职业生涯规划书1000字,外贸网站seo教程上一篇我们介绍了python中的库 #xff0c;学习了一些常见的内置库。详细内容可点击–python学习笔记14 python中的库#xff0c;常见的内置库#xff08;random、hashlib、json、时间、os#xff09; 这一篇我们来看一下python中的类
创建一个类 class 类的名称():de…上一篇我们介绍了python中的库 学习了一些常见的内置库。详细内容可点击–python学习笔记14 python中的库常见的内置库random、hashlib、json、时间、os 这一篇我们来看一下python中的类
创建一个类 class 类的名称():def __init__(self,参数1,参数2,...):代码块1def 方法名1(参数3,参数4,...):代码块2def 方法名2(参数5,参数6,...):代码块3...#特别注意class类中的函数
# 必须要有一个参数且是第一个定义self#self: 表示当前调用该方法的对象
# 定义一个类
class Person:def eat(self):print(吃饭)def call(self,name):print(f打电话给{name})通过一个类创建一个对象
class Person:def eat(self):print(吃饭)def call(self,name):print(f打电话给{name})
# 相当于创建一个Person类的对象将对象的地址值赋值给变量p1
p1 Person()
p1.eat() #吃饭
p1.call(王子奇) #打电话给王子奇通过一个类创建多个对象
class Person:def eat(self):print(吃饭)def call(self,name):print(f打电话给{name})
# 相当于创建一个Person类的对象将对象的地址值赋值给变量p1
p1 Person()
p1.eat() #吃饭
p1.call(王子奇) #打电话给王子奇
print(----------------------------)
p2 Person() # 在内存中开辟一个新的空间
p2.eat() #吃饭
p2.call(王俊凯) #打电话给王俊凯
print(id(p1)id(p2)) # False 地址值不同给对象赋予属性
类中不写创建对象的之后单独为该对象创建新的属性
class Person:def eat(self):print(吃饭)def call(self,name):print(f打电话给{name})p1 Person()
p1.name 小虎
print(fp1对象的姓名为{p1.name})p2 Person() # 在内存中开辟一个新的空间
# print(fp1对象的姓名为{p2.name}) # 报错类中编写创建对象的时候直接就拥有了某个属性并且可以直接赋值
class Person:def __init__(self,name):# self.name 定义一个类中的属性,叫做nameself.name namedef eat(self):print(吃饭)def call(self,name):print(f打电话给{name})# 使用类名() 的方式创建对象,实际上底层调用的是类中的__init__(self)
# 若自己没写,默认一个类中有一个__init__(self),且只能有一个
p1 Person(小虎)
print(fp1对象的姓名为{p1.name}) #p1对象的姓名为小虎p2 Person(张三)
print(fp2对象的姓名为{p2.name}) #p2对象的姓名为张三练习题 手机: 属性: 品牌, 价格, 颜色 行为:打电话, 发短信 class Phone():def __init__(self,brand,price,color):self.brandbrandself.pricepriceself.colorcolordef call(self,name):print(f正在打电话给{name}...)def send_message(self,name,text):print(f给{name}发短信了,短信内容是{text})if __name__ __main__:p1Phone(HUAWEI,9999,宝石蓝)p1.call(王俊凯)p1.send_message(王俊凯,你什么时候开演唱会)p2Phone(XIAOMI,5999,钻石白)p1.call(王子奇)p1.send_message(王子奇, 和黄景瑜在拍一个剧吧)类的继承
继承是将多个类中的相同的部分单独提取到一个类中这些类于单独提出来的这个类产生一个关系这个关系就叫做继承关系其他类中也就拥有了相同的部分不需要特地定义出来。
通过继承子类拥有了父类中的成员。
class 父类:pass
class 子类(父类):passclass Student:def __init__(self,id,name,age):self.ididself.namenameself.ageagedef __str__(self):return fStudent:({self.id},{self.name},{self.age})def study(self):print(f{self.name}在学习)def play(self):print(f{self.name}在玩)
class PrimaryStudent(Student):pass
class HighStudent(Student):pass
stu1PrimaryStudent(20240001,图图,8)
stu1.study()
stu1.play()
stu2HighStudent(20240002,莉莉,15)
stu2.study()
stu2.play()特别注意 子类无法继承父类中私有的成员 class Fu:def fun1(self):print(好好学习天天向上)def __fun2(self):print(这是父类中私有的成员函数__fun2)
class Son(Fu):pass
s1 Son()
s1.fun1()
s1.__fun2()若子类中出现与父类的函数名以及函数参数都一样只是实现不一样的情况子类对象调用的是自己的函数 class Fu:def fun1(self):print(好好学习天天向上)def __fun2(self):print(这是父类中私有的成员函数__fun2)def fun3(self):self.__fun2()
class Son(Fu):def fun1(self):print(这是子类中的函数fun1)pass
s1 Son()
s1.fun1()子类中可以定义父类中没有的成员属性 class Fu:def __init__(self,name,age):self.name nameself.age age
class Zi(Fu):def __init__(self, name, age, sid):super().__init__(name,age)self.sid sid
z1 Zi(张三,18, 1001)
print(z1.name,z1.age,z1.sid) #张三 18 1001子类继承父类的同时可以出现父类中没有的行为 class Fu2:def fun1(self):print(shujia)
class Zi2(Fu2):def show(self):print(shujia666)
# d1 Fu2()
# d1.fun1()
# d1.show() #报错
d2 Zi2()
d2.fun1()
d2.show()子类中可以使用super()来调用父类中非私有的成员 class Fu:def fun1(self):print(这是父类中的fun1)
class Zi(Fu):def fun1(self):print(这是子类中的fun1)def show(self):self.fun1() # 调用的是子类中重写后的fun1函数# 调用父类中的fun1super().fun1()
z Zi()
z.show()在python中一个类可以同时继承多个类 class Fu:def fun1(self):print(这是父亲中的函数fun1)
class Mather:def fun2(self):print(这是母亲中的函数fun2)
class Son(Fu, Mather):def fun3(self):print(这是儿子自己的函数)
s1 Son()
s1.fun1()
s1.fun2()
s1.fun3()若同时继承的类中有相同的函数名谁先写就调用谁的 class Fu:def fun1(self):print(这是父亲中的函数fun1)def show(self):print(这是父亲中的函数show)
class Mather:def fun2(self):print(这是母亲中的函数fun2)def show(self):print(这是母亲中的函数show)
class Son(Mather,Fu):def fun3(self):print(这是儿子自己的函数)
s1 Son()
s1.fun1()
s1.fun2()
s1.fun3()
s1.show() # 调用的是母亲中的show多态
表示的是某一个事物在不同时刻下的不同状态
在python中默认支持多态因为python是动态数据类型语言。
class Animal:def __init__(self, name, age):self.name nameself.age agedef __str__(self):return fname:{self.name}, age:{self.age}def eat(self):print(吃)def sleep(self):print(睡)
#抽象
class Dog(Animal):pass
a1 Animal(小黄,2)
a1 Dog(小黑,3)
print(a1) #name:小黑, age:3抽象
from abc import abstractmethod
# from typing import override
class Animal:def __init__(self, name, age):self.name nameself.age agedef __str__(self):return fname:{self.name}, age:{self.age}abstractmethoddef eat(self):passabstractmethoddef sleep(self):passclass Dog(Animal):# overridedef eat(self):print(吃)# overridedef sleep(self):print(趴着睡)# a1 Animal(小黄,2)
a1 Dog(小黑,3)
a1.eat() #吃
a1.sleep() #趴着睡类变量
将变量定义在类中函数外
class Demo1:
# 类变量a 100def fun1(self):a 10print(a)print(Demo1.a) # 通过类名直接访问
d1 Demo1()
d1.fun1()
print(d1.a) # 也可以通过对象名进行访问下一篇我们来几个关于类的练习题结束我们python的基础语法内容啦。 我们即将进入python的进阶内容数据分析numpy、pandas、matplotlib的学习 点赞收藏关注一起打卡python学习吧