python--22 类和对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--22 类和对象相关的知识,希望对你有一定的参考价值。
对象 = 属性 + 方法
self是什么东西 this指针
python的魔法方法
公有和私有
私有的实现 name mangling 名字改编,名字重整 伪私有
类对象
class Turtle: #Python 中的类名约定一大写字母开头 """ 关于类的一个简单例子""" #属性 color = ‘green‘ weight = 10 legs = 4 shell = True mouth = ‘大嘴‘ #方法 def climb(self): print(‘我们正在很努力的向前爬.....‘) def run(self): print(‘我正在飞快的向前跑....‘) def bite(self): print(‘咬死你.....‘) def eat(self): print(‘有得吃,很满足....‘) def sleep(self): print(‘困了,睡觉,万安 Zzzz‘) tt = Turtle() #创建实例对象,赋值给tt print(tt.color) tt.climb()
运行结果:
[[email protected] ~]$ python3 test.py
green
我们正在很努力的向前爬.....
OO = Object Oriented 面向对象
OO的特征
封装
>>> list1 = [2,1,7,1,9,10] >>> list1.sort() >>> list1 [1, 1, 2, 7, 9, 10] >>> list1.append(9)
继承
>>> class Mylist(list): ... pass ... >>> list2 =Mylist() >>> type(list2) <class ‘__main__.Mylist‘> >>> list2.append(7) >>> list2.append(5) >>> list2.append(1) >>> list2.sort() >>> list2 [1, 5, 7]
多态 不同对象对同一方法的响应不同的行动
>>> class A: ... def fun(self): ... print(‘我是小A....‘) ... >>> class B: ... def fun(self): ... print(‘我是小B....‘) ... >>> a = A() >>> b = B() >>> a.fun() 我是小A.... >>> b.fun() 我是小B....
self是什么东西,self是指针
方法被调用的时候,对象会将自身作为第一个参数传给self参赛,接受到self的时候python就知道是哪一个对象在调用方法
>>> a = Ball() >>> a.setName(‘球A‘) >>> B = Ball() >>> B.setName(‘球B‘) >>> c = Ball() >>> c.setName(‘球C‘) >>> a.kick() 我叫球A,该死的,谁踢我... >>> B.kick() 我叫球B,该死的,谁踢我... >>> c.kick() 我叫球C,该死的,谁踢我...
Python的魔法方法
据说,Python的对象天生拥有一些神奇的方法,他们是面向对象的Python的一切......
他们是可以给你的类增加魔力的特殊方法......
如果你的对象实现了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,而这一切都是自动发生的......
Python的魔法方法总是会被双下划线包围 __
1.__init__(selfm, param1, param2...) 构造方法 在创建对象的时候被自动调用
>>> class Ball: ... def __init__(self,name): ... self.name = name ... def kick(self): ... print(‘我叫%s,该死的,谁踢我...‘ % self.name) ... >>> b = Ball(‘土豆‘) >>> b.kick() 我叫土豆,该死的,谁踢我...
公有和私有
默认情况下对象的属性和方法都是公有的,可以通过.操作符来访问
>>> class Person: ... name = ‘小Fish‘ ... >>> p = Person() >>> p.name ‘小Fish‘
私有的实现 name mangling 名字改编,名字重整 伪私有
在Python中定义私有变量只需要在变量名或函数名前加上‘__‘两个下划线,那么这个函数或变量就会为私有的了。 自动改成 _类名__变量名
>>> class Person: ... name = ‘小Fish‘ ... >>> p = Person() >>> p.name ‘小Fish‘ >>> class Person: ... __name = ‘小fish‘ ... def getName(self): ... return self.__name ... >>> p = Person() >>> p.name() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ‘Person‘ object has no attribute ‘name‘ >>> p.getName() ‘小fish‘
>>> p._Person__name
‘小fish‘
以上是关于python--22 类和对象的主要内容,如果未能解决你的问题,请参考以下文章