1. 多态(多种类型)
多态的体现如下:
def func(arg): print(arg) func(1) func("alex") func([11,12,13]) #func可以是任何东西 #但是对于C#,java都不是这样,参数必须要指定类型
多态的缺点:在缺少注释的情况下,不知道arg是什么类型,它有什么用处。比如说如果确定好是个list的话,那就可以append()。但是不确定的时候就不知道怎么用了。
2. 面向对象中的类成员
1) 字段
- 静态字段: 代码加载时已经创建,属于类
- 普通字段: 有对象才有这个,属于对象
class Province: country = "中国" #静态字段,保存在类里面 def __init__(self,name): self.name = name #保存在对象里,这是普通字段,如果没有调用这个函数,那么这个就不在内存里
2) 方法(属于类)
- 普通方法: 定义必须有self,通过对象执行
- 静态方法: @staticmethod,去掉self,参数可有可无,由类执行
- 类方法: @classmethod,静态方法的一种特殊形式。自动传类参数,由类执行
class Province: def __init__(self,name): self.name = name def show(self): #普通方法 print(self.name) @staticmethod #静态方法,1.加这个,2.去掉self,3.参数可有可无 def f1(arg1): print(arg1) @classmethod #类方法,必须要有参数 def f2(cls):#这个参数是自动传递的,是类名。静态方法的一种。 print(cls) def f3(self): return self.name[1] # #方法是由对象调用的 # obj = Province("河南") # obj.show() # #普通方法由对象去调用执行(方法属于类) # Province.f1(111)#静态方法,只跟类有关,不需要对象,由类调用,跟函数一样的 # Province.f2()#类方法,参数是类名 # obj = Province("alex") # ret = obj.f3() # print(ret)
时间: 2024-10-07 06:35:58