实例方法
实例方法
实例方法就是对象方法,需要实例化对象才能调用的方法。
Python中只要新建了一个类就会自动的创建它的内置属性和方法,可以用dir(类名)来进行查看。
代码
#!/usr/bin/env python
class Dog:
pass
print(dir(Dog))
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python class.py
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
类中定义函数的方法跟定义普通函数方法大致相同,唯一的区别就是类中的函数有一个self参数,且这个参数还要放在首位(这个参数必须有),用来表示实例化对象的引用,或者说其实就是表示实例对象本身,也就是对象自己。
代码
#!/usr/bin/env python
class Dog:
def __init__(self):
self.name = "大黄"
dog = Dog()
print(dog.name)
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Dog.py
大黄
init是魔法方法,用来初始化对象的属性值。
实际开发中狗的名字不是全叫大黄,狗的名字可以自定义。
以上代码优化
#!/usr/bin/env python
class Dog:
def __init__(self,name):
self.name = name
dog1 = Dog("大黄")
dog2 = Dog("二狗子")
print(dog1.name)
print(dog2.name)
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Dog.py
大黄
二狗子
在实际开发中我们会使用repr方法自定义类输出打印的格式,主要用来调试类使用的。
代码
#!/usr/bin/env python
class Dog:
def __init__(self,name):
self.name = name
def __repr__(self):
return f"Dog:{self.name}"
dog1 = Dog("大黄")
dog2 = Dog("二狗子")
print(dog1.name)
print(dog2.name)
print(dog1)
print(dog2)
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Dog.py
大黄
二狗子
Dog:大黄
Dog:二狗子
正式讲解一下实例方法
实例方法即对象方法,要用对象调用才行。
错误代码
#!/usr/bin/env python
class Dog:
def __init__(self):
self.name = "laifu"
def get_name(self):
return self.name
print(Dog.get_name())
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Dog2.py
Traceback (most recent call last):
File "/root/python_code/python_3/Dog2.py", line 11, in <module>
print(Dog.get_name())
^^^^^^^^^^^^^^
TypeError: Dog.get_name() missing 1 required positional argument: 'self'
正确代码
#!/usr/bin/env python
class Dog:
def __init__(self):
self.name = "laifu"
def get_name(self):
return self.name
#创建一个对象
dog = Dog()
print(dog.get_name())
运行结果
┌──(root㉿kali)-[~/python_code/python_3]
└─# python Dog2.py
laifu
浙公网安备 33010602011771号