python学习笔记(2018.2.9)

1.私有属性:类中的属性前一般加2个下划线,便于保护属性,不让实例直接进行修改,所以类里面会有相应的两个方法用来修改和获取属性,如:

 1 class Dog(object):
 2 
 3     def __init__(self,name,age,high):
 4 
 5         self.__name=name     #私有属性
 6 
 7         self.__age=age
       self.high=high #公有属性
8 9 def setAge(self,age): 10 11 if age>0 and age<75: 12 13 self.__age=age 14 15 def getAge(self): 16 17 return self.__age 18 19 xiaobai=Dog("小白","10") 20 21 xiaobai.setAge(20) 22 23 print(xiaobai.getAge())

2.类中:创建对象时,会自动调用__init__方法,删除对象时,会自动调用 __del__方法

  若一个对象有多个变量名字,用del多次删除后,才会调用__del__方法

3.类之间可以继承,这么写:class 子类名(父类)

  通过继承来的方法可以访问父类的私有属性

  子类自定义的方法不能访问父类的私有属性

4.私有方法:def __方法名(self,参数)          子类继承父类时,子类不能直接调用父类的私有方法

  调用私有方法:def __test3(self):

          print a

        def test4(self):

          self.__test3()

5.若子类中的方法名和父类中的方法名重名,子类的对象会优先使用子类的方法(就近原则)

 若子类中没有,再寻找父类中的方法,若继承了多个父类,优先使用先继承的那个(即class C(A,B),优先使用A)

 若A和B继承了Base,Base中也有同样的方法,还是优先使用先继承的,若A中没有,使用B中的,A和B都没有,才使用Base中的       (多继承)(广度遍历)

6.子类需要使用父类方法,但仍想进行修改,在子类的定义后加上   父类名.方法名(self)/super().方法名     (无需self),在下一行再定义子类的方法

1 class Animal(object):
2     def bark(self):
3         print("aaaaaaa")
4 class Cat(Animal):
5     def bark(self):
6         Animal.bark(self)
7         print("bbbbbbb")
8 miaomiao=Cat()
9 miaomiao.bark()

7.多态:有多个子类,子类和父类中有相同的方法,创建不同的子类对象,调用相同方法,产生结果不一样

8.若对象的初始化属性都一样,可以在类的init方法里直接定义

1 class Animal(object)
2     def __init__(self,name="shi",age="10")
3         self.name=name
4         self.age=age

9.类属性:分为公有属性 私有属性。类对象所拥有的属性,它被所有类对象实例对象所共有,在内存中只存在一个副本;放在方法外面的是类属性,放在方法里面的实例属性

        不能在类外通过实例对象和类对象访问私有的类属性如果在类外修改类属性,必须通过类对象去引用然后进行修改。

     如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,

     并且如果通过实例对象引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性

类方法:是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数

    @classmethod

      def test(cls):

        pass

实例属性:放在方法里面的实例属性,实例属性是实例对象特有的,类对象不能拥有,即不能通过类对象调用,创建了对象后才会调用__init__方法

***类对象可以直接调用类属性,类方法;不能调用实例属性,实例方法

  实例对象可以获取类属性和实例属性的值,但是只能修改实例属性,不能修改实例对象;还可以调用类方法和实例方法

 

 

实例方法

posted @ 2018-02-09 15:12  sarahshi0926  阅读(348)  评论(0)    收藏  举报