python之类的基础运用
1、如何在外部访问类里面的私有方法
通过 实例化对象._+类名__+私有方法名
举例:
class people:
def init(self, name):
self.name = name
def getName(self): # 实例方法
return self.name
def __say(self, con):
print(self.name +"说:"+con)
xiao=people('小红')
xiao._people__say('hello') ==》小红说:hello
2、类方法:
是类对象所拥有的方法,需要用修饰器“@classmethod”来标识其为类方法。它能够通过实例对象和类对象去访问。类方法的用途就是可以对类属性进行修改。对于类方法,第一个参数必须是
类对象,一般以“cls”作为第一个参数。
静态方法:
需要通过修饰器“@staticmethod”来进行修饰,静态方法不需要多定义参数。类和实例都能调用。
class country :
name= 'china'
@classmethod
def setName(cls,name): #类方法
cls.name= name
@staticmethod
def getName(): #静态方法
print(country.name)
cc=country()
cc.setName('hanguo')
cc.getName() ==》hanguo 修改类属性
country.setName('meiguo')
country.getName() ==》meiguo
3、常用内置方法:
在Python中有一些内置的方法,这些方法命名都有比较特殊的地方(其方法名以2个下划线开始然后以2个下划线结束)。
1、init(self,....):构造方法,在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。
2、del(self):析构方法,在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。
3、str(self,…):自定义实例输出方法,写好该方法后,替换实例默认的输出操作。没写这个方法前,实例化对象输出的是cc=country() ==》<main.country object at 0x0000000002C8C7C8> 写了之后,显示__str__返回的值

4、add(self,…):两个实例的加法操作。
5、getattribute(...):获取实例属性的值,可直接结合对象使用。
4、面向对象编程有三个特性:封装、继承和多态
封装:
面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中,分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。
继承:
继承是指可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 UniversityMember.init(self,name,age) #注意要显示调用父类构造方法;父类名.init(self,name,age)
子类不会主动调用父类的构造方法,所以需要显示的是调用
多态:
多态指的是一类事物有多种形态。如序列类型有多种形态:字符串,列表,元组;动物有多种形态:
5、python中的继承特点:
1)在Python中,如果父类和子类都重新定义了构造方法__init__( ),在进行子类实例化的时候,子类的构造方法不会自动调用父类的构造方法,必须在子类中显示调用。
第一种方法:super().init(name,age) #注意要显示调用父类构造方法;
第二种方法:People.init(self,name,age)
2)如果需要在子类中调用父类的方法:需要以 父类名.方法 这种方式调用,以这种方式调用的时候,注意要传递self参数过去;另一种方法是使用super() ,直接使用 super().xxx 或 super(Class, self).xxx
第一种方法:super().sex(sex1)
第二种方法:People.call(self,'13300001111')
3)Python 总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
4)对于继承关系,子类继承了父类所有的公有属性和方法,可以在子类中通过父类名来调用,而对于私有的属性和方法,子类是不进行继承的,因此在子类中是无法通过父类名来访问的。
5)Python支持多继承,能够让一个子类有多个父类。如果有多个父类,多个父类名之间用逗号隔开。class SubClass(SuperClass1,SuperClass2)
如果SubClass没有重新定义构造方法,它会自动调用第一个父类的构造方法,以第一个父类为中心。
如果SubClass重新定义了构造方法,需要显示去调用父类的构造方法,此时调用哪个父类的构造方法由
你自己决定;若SubClass没有重新定义构造方法,则只会执行第一个父类的构造方法。并且若SuperClass1和
SuperClass2中有同名的方法,通过子类的实例化对象去调用该方法时调用的是第一个父类中的方法
浙公网安备 33010602011771号