37:类和对象2

一、self

self代表类的实例,定义方法时写进第一个参数

>>> class Ball:
    def setName(self, name):
        self.name = name
    def kick(self):
        print('我叫%s,该死的,谁踢我...' % self.name)

        
>>> a = Ball()
>>> a.setName('球A')
>>> b= Ball()
>>> b.setName('球B')
>>> c = Ball()
>>> c.setName('土豆')
>>> a.kick()
我叫球A,该死的,谁踢我...
>>> b.kick()
我叫球B,该死的,谁踢我...
>>> c.kick()
我叫土豆,该死的,谁踢我...
>>>  

二、魔法方法

__init__(self):对象的初始化操作(类似构造函数),即在创建类的实例后自动实现__init__方法内的属性或方法

>>> class Ball:
    def __init__(self, name):
        self.name = name
    def kick(self):
        print('我叫%s,该死的,谁踢我...' % self.name)

        
>>> b = Ball('土豆')

>>> b.kick()
我叫土豆,该死的,谁踢我...

三、公有和私有

一般类中的方法和属性均为公有,若强调为私有,则在变量名前写入'__'双下划线

Python的私有是伪私有(Python的类没有权限控制),即仅将__name属性转为_Person__name变量,即‘_类名__属性’即可访问到

>>> class Person:
    __name = '张三'

    
>>> p = Person()
>>> p._Person__name
'张三'
>>> p.name
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    p.name
AttributeError: 'Person' object has no attribute 'name'
>>> 

猜你喜欢

转载自blog.csdn.net/weixin_41004521/article/details/81260817