下面就是详细讲解“Python面向对象之成员相关知识总结”的完整攻略:
Python面向对象之成员相关知识总结
成员属性
实例属性
实例属性是绑定在对象上的,每一个对象可以拥有不同的实例属性,在函数内部以self进行访问。
class Car:
def __init__(self):
self.color = 'white'
self.speed = 0
car1 = Car()
car2 = Car()
car1.color = 'red'
car2.speed = 60
类属性
类属性是绑定在类上的,所有的对象都共同拥有同样的类属性。在函数内部以类名.类属性名
进行访问。
class Car:
car_type = '普通车'
def __init__(self,color,speed):
self.color = color
self.speed = speed
car1 = Car('white',50)
car2 = Car('black',65)
print(Car.car_type) # 普通车
成员方法
实例方法
实例方法是绑定在对象上的,可以使用对象进行调用。
class Car:
def __init__(self, color, speed):
self.color = color
self.speed = speed
def show_info(self):
print("这辆车是%s,速度为%d" % (self.color, self.speed))
car1 = Car('white',50)
car1.show_info() # 这辆车是white,速度为50
类方法
类方法是绑定在类上的,使用@classmethod
装饰器进行定义。
class Car:
car_type = '普通车'
def __init__(self, color, speed):
self.color = color
self.speed = speed
@classmethod
def show_car_type(cls):
print ("这是%s" % cls.car_type)
Car.show_car_type() # 这是普通车
静态方法
静态方法不与对象或类绑定,使用@staticmethod
装饰器进行定义。
class Car:
car_type = '普通车'
def __init__(self, color, speed):
self.color = color
self.speed = speed
@staticmethod
def show_car_info(color, speed):
print ("这辆%s车速度为%d" % (color, speed))
Car.show_car_info('white',50) # 这辆white车速度为50
成员访问控制
私有成员
Python中没有绝对的“私有”,但是可以使用双下划线前缀进行指定为“私有成员”,可以强制不让从外部访问。
class Car:
def __init__(self, color, speed):
self.__color = color
self.__speed = speed
def show_info(self):
print("这辆车是%s,速度为%d" % (self.__color, self.__speed))
def set_color(self,color):
self.__color = color
car1 = Car('white',50)
car1.show_info() # 这辆车是white,速度为50
car1.__color = 'black'
car1.show_info() # 这辆车是white,速度为50
保护成员
Python中的保护成员使用单下划线前缀,在声明时提醒使用者不要直接访问。但实际上可以从外部进行访问。
class Car:
def __init__(self, color, speed):
self._color = color
self._speed = speed
def show_info(self):
print("这辆车是%s,速度为%d" % (self._color, self._speed))
car1 = Car('white',50)
car1._color = 'black'
car1.show_info() # 这辆车是black,速度为50
示例说明:
示例一:将汽车类的颜色改为红色
class Car:
def __init__(self, color, speed):
self.color = color
self.speed = speed
def show_info(self):
print("这辆车是%s,速度为%d" % (self.color, self.speed))
car1 = Car('white',50)
car2 = Car('black',65)
car1.color = 'red'
car1.show_info() # 这辆车是red,速度为50
在实例属性中,color
是绑定在对象上的实例属性,使用car1.color = 'red'
即可改变颜色属性为红色。
示例二:静态方法打印汽车的全称
class Car:
car_type = '普通车'
def __init__(self, color, speed):
self.color = color
self.speed = speed
@staticmethod
def show_car_info(car_brand, color, speed):
print ("这辆%s%s车速度为%d" % (car_brand, color, speed))
Car.show_car_info('卡车', '红色', 60)
静态方法不与对象或类绑定,只需要使用@staticmethod
定义方法,并在方法内部进行操作即可。在这个示例里,加入了car_brand
参数,输出的改为了汽车的全称。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python面向对象之成员相关知识总结 - Python技术站