dir 内置函数
变量,数据,函数都是对象
In [9]: def demo():
...: """这个是测试函数"""
...: print("123")
...:
In [10]:dir(demo) #使用内置函数dir传入标志符/数据,可以查看对象内的所有属性和方法
In [10]: demo.__doc__
Out[10]: '这个是测试函数'
__方法名__
__new__ 创建对象时,会被自动调用
__init__ 对象被初始化时,会被自动调用
__del__ 对象被从内存中销毁时,会被自动调用
__str__ 返回对象的描述信息,print函数输出使用
定义简单的类(只包含方法)
class 类名:
def 方法1(self, 参数列表):
pass
def 方法2(self, 参数列表):
pass
对象变量 = 类名()
1 class Cat :
2 def eat(self):
3 print("猫爱吃鱼")
4 def drink(self):
5 print("猫爱喝水")
6 tom = Cat()
7 tom.drink()
8 tom.eat()
9 print(tom)
10 addr = id(tom)
11 print("%d" % addr)
12 print("%x" % addr)
13
14 猫爱喝水
15 猫爱吃鱼
16 <__main__.Cat object at 0x00000000012FB438>
17 19903544
18 12fb438
引用
%d 十进制 %x 十六进制
1 class Cat:
2 def eat(self):
3 print("猫爱吃鱼")
4 def drink(self):
5 print("猫爱喝水")
6 # 创建猫对象
7 tom = Cat()
8 tom.name = "Tom"
9 tom.drink()
10 tom.eat()
11 print(tom)
12 # 再次创建猫对象
13 lazy_cat = Cat()
14 lazy_cat.name = "大懒猫"
15 lazy_cat.drink()
16 lazy_cat.eat()
17 print(lazy_cat)
18 lazy_cat2 = lazy_cat
19 print(lazy_cat2)
20
21 猫爱喝水
22 猫爱吃鱼
23 <__main__.Cat object at 0x0000000004414E48>
24 猫爱喝水
25 猫爱吃鱼
26 <__main__.Cat object at 0x00000000043E3F28>
临时设置对象属性
方法中的self参数
哪一个对象调用的方法,self就是哪一个对象的引用
在类封装的方法内部,self就表示当前调用方法的对象自己
调用方法时,程序员不需要传递self参数
在方法内部
可以通过self.访问对象的属性
也可以通过self.调用其他的对象方法
1 class Cat:
2 def eat(self):
3 # 哪一个对象调用的方法,self就是哪一个对象的引用
4 print("%s爱吃鱼" % self.name)
5 def drink(self):
6 print("猫爱喝水")
7 # 创建猫对象
8 tom = Cat()
9 # 可以使用.属性名,利用赋值语句就可以
10 tom.name = "Tom"
11 tom.drink()
12 tom.eat()
13 print(tom)
14 # 再次创建猫对象
15 lazy_cat = Cat()
16 lazy_cat.name = "大懒猫"
17 lazy_cat.drink()
18 lazy_cat.eat()
19 print(lazy_cat)
20 lazy_cat2 = lazy_cat
21 print(lazy_cat2)
22
23 猫爱喝水
24 Tom爱吃鱼
25 <__main__.Cat object at 0x0000000004294E10>
26 猫爱喝水
27 大懒猫爱吃鱼
28 <__main__.Cat object at 0x0000000004294EB8>
29 <__main__.Cat object at 0x0000000004294EB8>
设置对象属性
不推荐在类的外部给对象增加属性
如果在运行时,没有找到属性,程序会报错
对象应该包括哪些属性,应该封装在类的内部
初始化方法
类名()创建对象时 1:为对象咋内存中分配空间--创建对象 2: 为对象属性设置 初始值--初始化放放init
__init__定义一个类具有哪些属性的方法
如果希望在创建对象的同时,就设置对象的属性,可以对__init__方法进行改造
1:把希望设置的属性值,定义成__init__方法的参数
2:在方法内部使用self.属性 = 形参 接收外部传递的参数
3:在创建对象时,使用类名(属性1,属性2..)调用
class Cat:
def __init__(self, new_name):
#print("这是一个初始化方法")
# self.属性 = 形参
self.name = new_name
print("%s名字" % self.name)
# 使用类名() 创建对象时,自动调用__init__
tom = Cat("Tom")
lazy_cat = Cat("大懒猫")
初始化的同时设置初始值
内置方法和属性
当一个对象从内存中销毁前,会自动调用__del__方法
使用print输出对象变量,默认情况下回输出这个变量引用的对象 是由哪一个类创建的对象,以及在内存中的地址(十六进制)
希望看到自定义的信息,可以使用__str__方法 返回一个字符串
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s来了" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)
# del 关键字可以删除一个对象,调用__del__方法
del tom
print("-" * 50)
del
Tom来了
Tom
Tom 我去了
--------------------------------------------------
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s来了" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
def __str__(self):
return "我是小猫[%s]" % self.name
# tom 是一个全局变量
tom = Cat("Tom")
print(tom)
str
Tom来了
我是小猫[Tom]
Tom 我去了