网站首页 > 技术文章 正文
1,类的定义
- 类和对象都是现实生活中或程序中的内容抽象。
- 实际上所有事物都有两部分构成
1,数据(属性)
2,行为(方法)
- 在类的代码块中,我们可以定义变量和函数
变量会成为该类实例的公共属性,所有该类的实例都可以通过 对象、属性名的形式访问。
函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名() 的形式调用方法
- 注意:
方法调用时,第一个参数由解析器自动传递,所以定义方法时,至少要定义一个形参。
- 实例为什么能访问到类中的属性和方法
类中定义的属性和方法都是公共的,任何该类实例都可以访问。
- 属性和方法查找流程
当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性。
如果有,则直接返回当前对象的属性值
如果没有,则去当前对象的类对象中去寻找,如果有则返回类的对象属性值,如果没有则报错。
- 类对象和实例对象汇总都可以保存属性(方法)
- 如果这个属性(方法)是所有的实例共享的,则应该将其保存到类对象中
- 如果这个属性(方法)是某个实例独有的,则应该保存到实例对象中。
# -*- coding: UTF-8 -*-
class Person:
#在类中,我可以定义变量和函数
#在类中我们定义的变量,将成为所有实例的公共属性
#所有实例都可以访问这些变量
name = 'swk' #公共属性,所有实例都可以访问
pass
#在类中定义的函数我们称之为方法
#这些方法可以通过该类的所有实例访问。
def say_hello(self):
#方法每次被调用时,解析器都会自动传递第一个实参
#第一个参数,就是调用方法的对象本身
#如果是p1调用,则第一个参数就是p1对象
#如果p2调用,则第一个参数就是p2对象
# 一般我们都会将这个参数命名为self
print("hello, 我是 %s" % self.name)
#创建person实例
p1 = Person()
p2 = Person()
print(p1.name)
print(p2.name)
#调用方法,对象.方法名()
#方法调用和函数调用的区别
#如果是函数调用,则调用时传几个参数,就会有几个实参
#但是如果是方法调用,默认传一个参数,所以方法中至少要定义一个参数
p1.say_hello()
print(p1.name, p2.name)
p1.name = "zbj"
p2.name = "shs"
del p2.name #删除p2的name属性
print(p1.name)
print(p2.name)
2,创建对象的流程
p1 = Person()的运行流程
1,创建一个变量
2,在内存中创建一个新对象
3,__init__(self)方法执行
4,将对象的id赋值给变量
# -*- coding: UTF-8 -*-
class Person:
#在类中可以定义一些特殊方法
#特殊方法都是以__开头,__结尾的方法
#特殊方法不需要自己调用, 不要尝试去调用特殊方法
#特殊方法将会在特殊时刻自动调用
#学习特殊方法
# 1,特殊方法什么时候调用
# 2, 特殊方法有什么作用
#创建对象的流程
#p1 = Person()的运行流程
#1,创建一个变量
#2,在内存中创建一个新对象
#3,__init__(self)方法执行
#4,将对象的id赋值给变量
#init会在对象创建后立刻调用
#init对象可以用来向新创建的对象中初始化属性
#调用类创建对象时,类后面的所有对象参数都可以一次传递到init()中
name = 'swk'
def __init__(self, name):
#print('hello')
#init可以通过self向新建的对象中初始化属性
self.name = name
def say_hello(self):
print('hello %s' % self.name)
# p1 = Person()
# #手动添加对象的name属性
# p1.name = 'swk'
# p2 = Person()
# p2.name = 'zbj'
#
# p1.say_hello()
# p2.say_hello()
p1 = Person('swk')
p1.say_hello()
3, 类的基本结构
class 类名([父类]):
公共属性...
#对象初始化福能股份
def __init__(self, ...):
...
#其他方法
def method_1(self,...):
...
def method_2(self,...):
...
猜你喜欢
- 2025-06-13 Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- 2025-06-13 Python函数调用常见的8个错误及解决方案
- 2025-06-13 Python学不会来打我(30)python模块与包详解
- 2025-06-13 《防秃指南:Python高频考点串烧(附翻车现场实录)》
- 2025-06-13 Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 266℃Python短文,Python中的嵌套条件语句(六)
- 265℃python笔记:for循环嵌套。end=""的作用,图形打印
- 264℃PythonNet:实现Python与.Net代码相互调用!
- 259℃Python实现字符串小写转大写并写入文件
- 258℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 118℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 92℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python中怎么给属性增加类型检查或合法性验证?
- 如何把python绘制的动态图形保存为gif文件或视频
- Python XOR异或 操作(python异或函数)
- 每天学点Python知识:使用制表符或换行符来添加空白
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- python之类的定义和对象创建篇(如何在python中定义一个属于对象的数据成员?)
- Python函数调用常见的8个错误及解决方案
- Python学不会来打我(30)python模块与包详解
- 《防秃指南:Python高频考点串烧(附翻车现场实录)》
- Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)