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类与对象

类方法里面可以调用其它类方法
类方法里面可以调用类变量

对象方法里面可以调用类变量
对象方法里面可以调用类方法
对象方法里面可以调用其它对象变量
对象方法里面可以调用其它对象方法


静态方法里面不能调用类变量和类方法,也不能调用对象方法和对象变量

私有方法需要用对象方法调用

构造函数里面不带self.的变量只能在构造函数内使用

构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作

python中的类和对象
类:具有相同的属性和方法的对象集合
举例:张三、李四属于人类的对象
共同属性:1个头、2只手、2只脚
共同方法:睡觉、吃饭、花钱

举例:笔记本电脑、台式电脑属于电脑类的对象
共同的属性:显示器、都有开机键
共同的方法:都可以上网

对象:某一个类真实存在的实例
实例化:根据类创建对象的过程称之为实例化

类和对象:类方法、实例方法、类变量、实例变量

类变量:定义在类里面、函数外

装饰器:在不改变函数功能的基础上添加新的功能


class People(object): ? ? ? ? #定义一个People类、object是基类、父类、超类
? ? def __init__(self,name): ?#构造函数(作用:根据类创建对象时做初始化的) 实例化时会自动调用构造函数
? ? ? ? self.name = name ? ? ?#实例变量
? ? header = 1 ? ? ? ? ? ? ? ?#定义一个类变量

? ? '定义一个类方法(需要使用到装饰器@classmethod)'
? ? @classmethod ? ? ? ?#装饰器
? ? def test(cls):
? ? ? ? print('会睡觉')

? ? '定义一个实例方法'
? ? def func1(self): ? ?#self代表对象本身
? ? ? ? print('会砍柴')

? ? '定义一个实例方法'
? ? def func2(self):
? ? ? ? print('会拉煤')

? ? def func3(self):
? ? ? ? print('{}去北京砍柴'.format(self.name))
p1 = People('张三') ?#根据People类生成一个p1对象
# p2 = People() ?#根据People类生成一个p2对象
'对象可以调用实例方法'
# p1.func1()
# p2.func2()

'类不能调用实例方法'
# People.func1()

'对象可以调用类变量'
# print(p1.header) ? ?#运行结果为:1

'类调用类变量'
# print(People.header) ?#运行结果为:1

'对象可以调用实例变量'
# print(p1.name) ? ? ? ? ?#运行结果为:张三

'类不能调用实例变量'
# print(People.name)

# p1.func3() ? ? #运行结果为:张三去北京砍柴
'''
备注:
1、类变量和类方法是公有的,类和对象都可以调用
2、实例变量和实例方法是私有的,只有对象可以调用
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

//
class Num():
? ? a = 1 ? ?#类变量
? ? def __init__(self,i):
? ? ? ? self.i = i ?#实例变量
? ? '定义类方法'
? ? @classmethod
? ? def func1(cls):
? ? ? ? return 8


? ? @classmethod
? ? def func2(cls):
? ? ? ? value = cls.func1() ?#类方法可以调用其他类方法
? ? ? ? print(value) ? ?

? ? def func3(self):
? ? ? ? print('多测师')

? ? '定义一个实例方法'
? ? def func3(self):
? ? ? ? # print(self.a+1) ?#对象方法可以调用类变量
? ? ? ? # print('这是一个实例方法')
? ? ? ? value = self.func1() #对象方法可以调用其他对象方法
? ? ? ? print(value) ??

? ? '定义一个静态方法'
? ? @staticmethod
? ? def func4(): ? ?#静态方法不可以调用类的变量和方法,也不可以调用对象的变
量和方法
? ? ? ? print('这是一个静态方法')
? ? '''
? ? 备注:
? ? 1、静态方法是类里面的一个普通方法,既不是实例方法也不是类方法
? ? 2、定义静态方法需要使用到装饰器@staticmethod
? ? 3、静态方法没有cls或self修饰
? ? 4、静态方法里面既不可以引用类变量和实例变量也不可以调用类方法和实例方

? ? '''
n = Num(1)
n.func3() ? #2 ? #多测师

/
'''
备注:
1、类变量和类方法是公有的,类和对象都可以调用
2、实例变量和实例方法是私有的,只有对象可以调用
'''
print(id(People))
p = People ? ? ??
print(id(p))
'''
备注:实例化时类不加括号相当于赋值,所以打印p和People的id指定的是同一内
存地址
2223720310792
2223720310792
'''

print(id(People))
p = People ? ? ??
print(id(p))
'''
备注:实例化时类必须加括号,才称之为创建对象,对象和类指向的是不同的内存
地址
2513161119928
2513167783808
'''
2513161119928
2513167783808

'封装一个读取文件中所有内容的公共方法'
# def get_file_value(file):
# ? ? f = open(file,'r')
# ? ? value = f.read()
# ? ? print(value)


# 封装一个读取文件的公共方法(默认读取所有,读取任意行数)
'二次封装'
def get_file_value(file,star_index=None,end_index=None):
? ? f = open(file,'r')
? ? value = f.readlines()
? ? for i in value[star_index:end_index]:
? ? ? ? print(i)

'封装一个读取文件中所有内容的公共方法'
def get_file_value(file):
? ? f = open(file,'r')
? ? value = f.read()
? ? print(value)

# 封装一个读取文件的公共方法(默认读取所有,读取任意行数)
def func(file,x=None,y=None):
? ? f=open(file,'r')
? ? if x==None or y==None:
? ? ? ? print(f.read())
? ? else:
? ? ? ? print(f.readlines()[x:y])

func(r'C:\Users\Administrator\Desktop\test.txt',1,4)

# class Phone():
# ? ? '定义一个私有方法'
# ? ? def __call100(self):
# ? ? ? ? print('正在打电话')
#
# ? ? def ?func1(self,money):
# ? ? ? ? if money > 0:
# ? ? ? ? ? ? self.__call100()
# ? ? ? ? else:
# ? ? ? ? ? ? print('您的余额不足,请充值后在拨打电话')
#
# '''
# 封装:
# 1、将属性或方法设为私有的
# 2、私有属性或方法外部无法直接调用
# '''
# p = Phone()
# p.func1(1) ? ?#运行结果为:正在打电话
# p.func1(0) ? ?#运行结果为:您的余额不足,请充值后在拨打电话


class People():
? ? name = '小七'
? ? __age = '18'
? ? __phone = '18389581559'

? ? def get_age(self,user):
? ? ? ? if user == '陈':
? ? ? ? ? ? return self.__age
? ? ? ? else:
? ? ? ? ? ? return '滚犊子'

? ? def get_phone(self,user):
? ? ? ? if user == '周':
? ? ? ? ? ? return self.__phone
? ? ? ? else:
? ? ? ? ? ? return '想都别想'

# print(People.name) ? ? #运行结果为:小七
print(People().get_age('陈')) ?#运行结果为:18
print(People().get_phone('周')) #运行结果为:18389581559
///
'python中类的继承'
class Grand_Father():
? ? def __init__(self,n):
? ? ? ? pass
? ? def dcs1(self):
? ? ? ? print('爱下棋')

? ? def dcs2(self):
? ? ? ? print('爱喝茶')

class Father(Grand_Father):
? ? # def __init__(self,user):
? ? # ? ? pass
? ? def func1(self):
? ? ? ? print('爱抽烟')

? ? def func2(self):
? ? ? ? print('爱看美女')

? ? def func3(self):
? ? ? ? print('爱打麻将')


class Son(Father): ? ?#Son类继承Father类
? ? # def __init__(self,name):
? ? # ? ? pass
? ? def func4(self):
? ? ? ? print('爱学习')

? ? def func5(self):
? ? ? ? print('爱敲python')

s = Son()
s.func1() ? ?#运行结果为:爱抽烟
s.func4() ? ?#运行结果为:爱学习


'''
1、子类继承父类后可调用父类的所有方法
2、子类继承父类后,父类无法调用子类的方法
3、当子类和父类同时拥有构造函数函数时,默认使用子类自己的构造函数
4、当子类没有构造函数时,父类拥有构造函数,子类默认继承父类的构造函数
5、当子类同时继承多个父类时,优先使用自己的构造函数,如果子类没有构造函
数则继承父类的构造函数
6、当子类同时继承多个父类时,优先继承第一个父类的构造函数,如果第一个父
类没有构造函数,则继承第二个父类
7、子类同时继承多个父类时,可以调用多个父类的方法
8、当父类继承其他类时,子类可以调用父类和父类继承的类方法
'''

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:46:22  更:2021-09-07 10:48:30 
 
开发: 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/15 13:55:09-

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