本周学习内容是面向对象,学的只是皮毛,这一节是最有用的,也是很难的一节。
可以用构造法,调用__init__来写:
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
实例化方法,通过类创建实例时,自动触发执行。
继承就是子类继承父类的方法,属性。
定义Point、Circle、Cylinder(点、圆、圆柱) 三个类,三个类都拥有 x,y 属性,而 Circle 又增加了属性radius,Cylinder 类又增加了属性 height。都有获得 x,y 坐标,设置 x,y 坐标,求圆的面积、圆柱的体积的方法。
pi=3.14
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
class Circle(Point):
def __init__(self,x,y,radius):
super().__init__(x,y)
self.radius=radius
def s(self):
return pi*self.radius**2
class Cylinder(Circle):
def __init__(self,x,y,radius,height):
self.height=height
super().__init__(x,y,radius)
def v(self):
return pi*self.radius**2*self.height
d=Point(10,10)
s1=Circle(10,10,10)
v1=Cylinder(10,10,10,2)
print(s1.s())
print(v1.v())
以上这个可以体现继承的优点,更加方便快捷。
可以在属性名前面加上__
class Dog:
def __init__(self,name,age):
self.hidden_name=name
self.hidden_age=age
它不可以直接用对象名+方法来访问。
可以用getter和setter方法。
getter 获取对象中的指定属性
setter 用来设置对象中的指定属性
class Dog:
def __init__(self,name,age):
self.hidden_name=name
self.hidden_age=age
def get_name(self):
return self.hidden_name
def set_name(self,name):
self.hidden_name=name
d=Dog("旺财")
print(d.get_name())
d.set_name("大黑")
print(d.get_name())
如以上的代码
实例:也称对象。通过类定义的初始化方法,赋予具体的值。
实例化:创建类的实例的过程或操作。
实例变量:定义在实例中的变量,只作用于当前实例。
类变量:类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外。
类方法:类方法是将类本身作为对象进行操作的方法。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对父类的方法进行改写。
封装:不希望被外界访问的属性,将之变为私有的,暴露给外界一个访问的函数,提高数据安全性。
多态:根据对象类型的不同以不同的方式进行处理。
class Student:
def __init__(self,id,clahao,name,xingbie,nianling):
self.id=id
self.clahao=clahao
self.name=name
self.xingbie=xingbie
self.nianling=nianling
def get_id(self):
return self.id
def get_clahao(self):
return self.clahao
def get_name(self):
return self.name
def get_xingbie(self):
return self.xingbie
def get_nianling(self):
return self.nianling
def toString(self):
print("学号:",self.id,"班号:",self.clahao,"名字:",self.name,"性别:",self.xingbie,"年龄:",self.nianling)
s=Student('001','2',"何","男",'18')
print(s.get_id())
print(s.get_clahao())
print(s.get_name())
print(s.get_xingbie())
print(s.get_nianling())
print(s.toString())
仔细体会。