Erlo

Python基础(六)——面向对象编程

2019-05-20 11:02:20 发布   194 浏览  
页面报错/反馈
收藏 点赞

(1)定义类和实例

  这一部分难得和 Java 较为一致,直接写个例子:

1 class Stu:
2     def __init__(self, name, id): # 构造方法
3         self.name = name
4         self.id = id
5     def test(self, name2):
6         print('He is {}'.format(name2))
7 student = Stu('Bob', '123')
8 print(student.name, student.id) # Bob 123
9 student.test('LQ')

  注意一点:类中自定义的方法一定要含有 self 参数,但是在调用的时候,无需为此传递参数。

  如果需要将name或者id设置成私有变量,则加上短横线如:self._name 与 self._id 。则通过 get/set 方法进行控制(避免传入不必要参数)。

  Python 中 _***_ 结构的变量是特殊变量(不是私有变量),特殊变量是可以直接访问的。

(2)继承和多态

  主要是语法,内容应该都熟悉:

 1 class Animal(object):
 2     def run(self):
 3         print('Animal is running...')
 4 
 5 # 子类方法继承父类方法
 6 class Dog(Animal):
 7     pass
 8 d = Dog()
 9 d.run() # Animal is running...
10 
11 # 子类方法覆盖父类方法.多态
12 class Cat(Animal):
13     def run(self):
14         print('Cat is running...')
15 c = Cat()
16 c.run()  # Cat is running...
17 
18 print(isinstance(c, Cat)) # True
19 print(isinstance(c, Animal))  # True

(3)动态语言 vs 静态语言

  静态和动态是相对的,C/C++/Java 是静态语言,Python是动态语言。具体来说,在静态语言中每个变量都有固定的变量类型比如Java 中 String str = 'abc',那么此时 str = 1 这样的赋值语句会报错。相反,动态语言中定义变量无需固定死变量类型,a = 1 之后 a = '111' 也不会报错。

  静态变量易于调试,因为在内存中固定为某一区域且易于月度,动态变量书写随意,不易调试(因为变量可能别重新定义成另一种类型)不易阅读。 

  动态语言的编程称为鸭子类型,例如迭代对象需要有_inter()_,动态语言中不需要管这个对象是继承下来的还是什么,只要有这个方法,就被当作可迭代对象(秀晕了)。

 

 

  

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认