2019-02-22 2-15 11-oop基础

第二章 语法基础

课时15 11-oop基础

1.类和对象的成员分析

  • 类和对象都可以存储成员,成员可以归类所有,也可以归对象所有
  • 成员的属性直接指向类实例的属性;成员也可以自定义自身的属性
#代码
class A():
    name = "name"
    age = 18
print(id(A.name))
print(id(A.age))
a1 = A()
print(id(a1.name))
print(id(a1.age))
a2 = A()
a2.name = "name2"
a2.age = 16
print(id(a2.name))
print(id(a2.age))
print(a1.__dict__)
print(a2.__dict__)
#效果
139985056652176
94112357273344
139985056652176
94112357273344
139984802844264
94112357273280
{}
{'name': 'name2', 'age': 16}

2.关于self

  • 使用"class"来调用类本身的属性
#代码
class A():
    name = "name"
    age = 18
    def intr(i):
        i.name = "NM"
        i.age = 11
        print(i.name)
        print(i.age)
    def intr2():
        print("Good night!")
        print(__class__.name)
        print(__class__.age)
intro = A()
intro.intr()
A.intr2()
###效果
NM
11
name
18
Good night!

3.面向对象的三个特性

  • 封装:对对象的成员进行访问限制
    a)三个级别:
    公开:public
    受保护的:protected
    私有的:private
#代码
class person():
    name = "NM"
    __age = "18"
p = person()
print(p.name)
print(person.__dict__)
print(p._person__age)
print(p.__age)
#效果
NM
{'__module__': '__main__', 'name': 'NM', '_person__age': '18', '__dict__': , '__weakref__': , '__doc__': None}
18
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
 in ()
      5 print(p.name)
      6 print(person.__dict__)
----> 7 print(p.__age)

AttributeError: 'person' object has no attribute '__age'

b)判别对象的位置
对象内部、对象外部、子类中

  • 继承
  • 多态

你可能感兴趣的:(2019-02-22 2-15 11-oop基础)