python技巧合集(四)

python技巧合集(四)

  • python中没有do..while循环

  • class Car:
        price = 100000
        def __init__(self, c, w):
            self.color = c
            self.__weight = w
    
    car1 = Car("Red", 10.5)
    car2 = Car("Blue", 11.8)
    print(car1.color)
    print(car1._Car__weight)
    print(car1.__weight)
    关于python的私有变量,运行结果:
    
    Red
    10.5
    Traceback (most recent call last):
      File "E:\系统工程组\code\learn_python\Car.py", line 11, in <module>
        print(car1.__weight)
    AttributeError: 'Car' object has no attribute '__weight'
  • python中的成员属性有两种,一种是实例属性,在构造函数__init__()中定义,一种是类属性,在类中方法之外定义。在类的外部,实例属性属于对象,只能通过对象明访问;类属性属于类,可以通过类名访问,也可以通过对象名访问,为类的所有实例共享。

  • 类中定义的方法大致分为公有方法、私有方法、静态方法。其中公有方法和私有方法属于对象,私有方法以两个下划线__开始,每个对象都有自己的公有方法和私有方法。公有方法通过对象名调用,私有方法只能在属于对象的方法中通过self调用,或者在外部通过Python支持的特殊方式来调用。如果通过类名来调用属于对象的公有方法,需要显示为该方法的self传递一个对象名,用来明确指定访问哪个对象的数据成员。静态方法可以通过类名和对象名调用,但是不能直接访问属于对象的成员,只能访问属于类的成员。

  • 派生类不能访问父类的私有成员。

    python中继承的特点:1. 基类的__init__函数不会自动调用,需要在派生类的构造中专门调用。2. 需要在派生类中调用基类的方法时,有两种方式。a. super(), b. 基类.方法名(self) 3. 先在本类中找调用的方法,再去各级基类查找

    class Person(object):
        def __init__(self, name='', age=20, sex='man'):
            self.setName(name)
            self.setAge(age)
            self.setSex(sex)
    
        def setName(self, name):
            self.__name = name
    
        def setAge(self, age):
            self.__age = age
    
        def setSex(self, sex):
            self.__sex = sex
    
        def show(self):
            print('姓名:', self.__name, '年龄:', self.__age, '性别:', self.__sex)
    
    
    class Student(Person):
        def __init__(self, name='', age=20, sex='man', schoolyear=2016):
            super(Student, self).__init__(name, age, sex)
            self.setSchoolyear(schoolyear)
        def setSchoolyear(self, schoolyear):
            self.__schoolyear = schoolyear
    
        def show(self):
            Person.show(self) # or super(Student, self).show()
            print('入学年份', self.__schoolyear)
    
    if __name__ == '__main__':
        zhangsan=Person('zhangsan', 21, '男')
        zhangsan.show()
        lisi = Student('lisi', 18, '男', 2025)
        lisi.show()
        lisi.setAge(20)
        lisi.show()

发表回复

*您的电子邮件地址不会被公开。必填项已标记为 。

*
*