IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-类与对象 -> 正文阅读

[Python知识库]python-类与对象

类方法、实例方法、静态方法
1.关于参数的区别
实例变量:定义实例方法至少有一个形参--self
类方法:定义类方法至少有一个形参--cls
静态方法:可以不定义形参

定义方法是装饰器的区别
实例方法:不需要添加装饰器
类方法:需要添加装饰器---@classmethod
静态方法:需要添加装饰器---@staticmethod

调用
1.实例方法可以通过对象直接调用;通过类名调用时,需要创建一个对象并且传递参数时要将对象传进去
2.类方法可以通过类名直接调用,也可以通过对象调用
3.静态方法可以通过类名直接调用,也可以通过对象

# class Dog():#定义类
#     age =3 #类变量
#     def __init__(self):#魔法函数,类的属性有多个,比如dog的属性有name,age
                         #类的构造函数,用于初始化类的内部状态,为类的属性设置默认值
#         self.name='xiaobai'#定义属性,实例变量
#     def a1(self): #实例方法,定义一个函数,为类的函数,称为方法;它至少有一个参数self
#         print("{}岁的{}正在跑步!".format(self.age,self.name))
#     @classmethod
#     def a2(cls):
#        print('xiaohei{}岁了'.format(cls.age))#类方法只能访问类变量
#     @staticmethod
#     def a3(name):#静态方法
#     #静态方法与类无关,只是类中的一个功能
#     #静态方法不能访问类变量与实例变量
#         print("{}在睡觉".format(name))
#
# d =Dog()
# d.a1()#通过实例对象调用实例方法
# Dog.a1(d)#通过类名称调用实例方法,需要在方法中传入实例对象
# d.a2()#通过实例对象调用类方法
# Dog.a2()#通过类名称调用类方法
# d.a3('xiaohuang')#通过实例对象调用静态方法
# Dog.a3('xiaohuang')#通过类名称调用静态方法

调用类下的方法,必须通过类的实例对象/类名称()进行调用
当类中初始化方法__init__ 中存在参数时,则在实例化时,需要往实例括号中传入参数
当类中初始化方法__init__ 中不存在参数时,则在实例化时,不需要往实例括号中传入参数,
在调用方法时再进行传参

class Four():
? ? def __init__(self,a,b):
? ? ? ? self.a = int(a)
? ? ? ? self.b = int(b)
? ? def a1(self):
? ? ? ? return self.a + self.b
p = Four(2,3)
print(p.a1())

class Four1():
? ? def s(self,x,y):
? ? ? return x +y
print(Four1().s(2,3))

?单继承
一个对象使用另一个对象的属性和方法,被继承的类也称父类
(1)父类和子类的方法不一样
class Father():
? ? def __init__(self,car):
? ? ? ? self.car= car
? ? def a1(self):
? ? ? ? print("有很多钱,买了辆{}".format(self.car))
? ? def a2(self):
? ? ? ? print("有很多楼")
class Bigson(Father):
? ? def s(self):
? ? ? ? print("给女朋友买了辆{}".format(self.car))
class Smallson(Father):#Smallson类继承Father类,Smallson类拥有Father类的所有方法和属性
? ? def toys(self):
? ? ? ?print("小儿子也有{}玩具车".format(self.car))

f = Father("宝马")
f.a1()
s = Smallson('法拉利')
s.toys()

(2)子类拥有和父类相同的方法
当子类拥有和父类相同方法,通过子类实例调用该方法后,执行的是子类下的方法
class a():
? ? def name(self):
? ? ? ? print('我叫熊大')
class a1(a):
? ? #对父类方法重写
? ? def name(self):
? ? ? ? print("我叫熊二")
m =a1()
m.name()#我叫熊二

(3)子类拥有和父类相同的方法和属性
class a():
? ? def __init__(self,name):
? ? ? ? self.name=name
? ? def Name(self):
? ? ? ? print('我叫{}'.format(self.name))
class a1(a):
? ? #对父类方法重写
? ? def Name(self):
? ? ? ? print("我也叫{}".format(self.name))
m =a1('xiaongda')
m.Name()

多继承
一个子类继承多个父类

class a():
? ? def name(self):
? ? ? ? print('我叫熊大')
class b():
? ? def name1(self):
? ? ? ? print("我叫熊二")

class c(a,b):
? ? pass

c1= c()
c1.name()
c1.name1()


class M():
? ? def __init__(self,s):
? ? ? ? self.s =s
? ? def b(self):
? ? ? ? print("Mother love {}".format(self.s))
class F():
? ? def __init__(self,work):
? ? ? ? self.work =work
? ? def Work(self):
? ? ? ? print("Father work is{}".format(self.work))
class myself(M,F):
?def __init__(self,work =None,s=None):
? ? F.__init__(self,work)
? ? M.__init__(self,s)

c = myself("test","shopping")
c.Work()
c.b()
print(myself.mro())#查看顺序
#Father work istest
#Mother love shopping
#[<class '__main__.myself'>, <class '__main__.M'>, <class '__main__.F'>, <class 'object'>]

如果不同的两个父类出现相同名称的属性或方法,子类会继承谁的属性或方法?
在调用方法时,他按广度优先,从左到右找,先在本类中找,没有则找基类的,也是从左到右。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:53:53  更:2021-12-14 15:56:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:27:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码