一.类的介绍
对象的结构:
id(标识) type(类型) value(值)
介绍: python是面向对象的编程语言
特点:复用性高方便后期维护,编写起来有一定难度
类:一个可以创建对象的对象
python有一些内置的类对象 int() list()....
由类可以创建对象实例.例如p1 = Person() p1:实例对象,Person:类对象
可以向类对象中定义属性和方法(类似于变量和函数),这个是公共的,由该类创建出来的所有实例化对象都能够访问,就像女娲创造人类(类对象),其中的每一个人(实例对象)都有升高体重(属性),都会说话(方法),
属性名 = 属性值
def 方法名(参数):
//这里定义方法中的参数会默认传递一个self参数
执行代码
二.self参数
-->类对象和实例对象都可以创建属性(方法)
如果这个属性(方法)是所有实例共有的,保存到类对象中,否则保存到实例对象中
-->方法每次调用时,解析器自动传递一个实参
如果P1调用,那么第一个参数就是P1对象
如果P2调用,那么第一个参数就是P2对象"""
class Person:
name ="小黑"
def speak(self):
print("你好,我是%s" %self.name)
# 创建两个人(Person实例)
p1 = Person()
p2 = Person()
p1.name ="小白"
p2.name ="小红"
print(p1.name) #小白
print(p2.name) #小黑
print(p1.speak()) #你好,我是小白
print(p2.speak()) #你好,我是小红
self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。
三.特殊方法
class Person():
def speak(self):
print("大家好,我是%s"%self.name)
p1 = Person()
p2 = Person()
p1.name ="小红"
p2.name ="小蓝"
p1.speak() // 大家好,我是小红
p2.speak() // 大家好,我是小蓝
问题引入:
有些属性是必须要有但是又各不相同的(不同的人有不同的名字,不同身份证号。。),所以每个人(实例对象),都必须定义这些属性(名字。。。),但是容易出错
解决途径:
在类中可以定义一些特殊方法(魔法方法)————开头————结尾
特殊方法可以自己调用(解析器调用)
1.什么时候调用:
-->创建出一个实例对象系统自动调用一次该方法
-->用户可以通过实例对象调用n次
2.有什么用:
class God():
def __init__(self):
#print("hello world")
print(self)
# g1 = God() # hello world
# g2 = God() # hello world
# g3 = God() # hello world
# g4 = God() # hello world
由此可见,通过特殊方法,只要创建一个实例对象,那么方法就会被默认调用一次
# <__main__.God object at 0x000001452D44C240>
# <__main__.God object at 0x000001452D44C2B0>
# <__main__.God object at 0x000001452D44C2E8>
# <__main__.God object at 0x000001452D44C320>
class God():
def __init__(self,name):
print("hello world")
print(self)
# 通过self相信创建实例对象初始化属性
self.name = name # 等同于g.name = name,g为创建出来的实例对象
print("你好,我是%s"%self.name)
g1 = God("fire_God") # 你好,我是fire_God
g2 = God("water_God") # 你好,我是water_God