python基础篇2-面向对象
OOP的理解应该都是通用的,对事物特征和行为的抽象,特征即是属性,行为即是方法。不过能够把具体问题合理的抽象和整合,真的还很体现理解的。
python类的定义:
class ClassName():
def method1():
clause....;
类名称一般采用大驼峰命名法。
说点我觉得不一样的地方吧
python支持在外部添加和获取属性,不过该属性只被当前对象持有。
>>> class Student():
... def print_info():
... print(f"my name is {self.name}")
...
>>> stu1 = Student()
>>> stu2 = Student()
>>> stu1.name = 'zhangsan'
>>> stu1.print_info()
Traceback (most recent call last):
File "<python-input-4>", line 1, in <module>
stu1.print_info()
~~~~~~~~~~~~~~~^^
TypeError: Student.print_info() takes 0 positional arguments but 1 was given
>>> print(stu1.name)
zhangsan
>>> print(stu2.name)
Traceback (most recent call last):
File "<python-input-6>", line 1, in <module>
print(stu2.name)
^^^^^^^^^
AttributeError: 'Student' object has no attribute 'name'
>>>
不过一般还是在内部添加和获取属性,通过self.pro = 初始化,这样在声明对象的时候即可初始化。
python类中具有特殊功能的方法:__XX__()的声明格式(又称魔法方法)
常见:
__init__(): 相当于构造函数,可以含参构造
__str__(): 相当于.ToString() 方法,重写后不再打印对象的内存地址,而是自定义的信息
__del__():相当于析构函数,和__init__()一样默认有并调用,不过重写后可以在释放对象的时候处理一些事情

浙公网安备 33010602011771号