****
//可以给函数参数设置默认值
def
stu_register(name,age,course,country
=
"CN"
):
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
,例如:def
stu_register(name,age,
*
args): ,这个*args就相当于c#中的 param [] class1 args 这样子
//类的创建
class ClassName
'''
注意,属性可以在__init__中,直接定义
'''
PropertyName = value #可以这样来定义类的属性,相当于c#中的类的静态属性,属于类而不属于对象,使用 " 类名.属性"来调用,又叫"公有变量"
def __init__(self,Name,age):
#这里是属于对象的属性
self.Name = 'aaaaa'
self.age =11
函数体
def hellow(self):
#'''要在其他成员方法中使用self,也要这样'''
print("my name is %s" ,self.Name)
@property #定义只读属性,可以使用 a = instance.fullnfo #不需要a =instacne.fullinfo(),原理是,修饰器将 fullinfo 从一个指向方法的变量,替换成一个执行结果
def fullInfo(self):
return self.Name + self.age
@classmethod #定义类方法,只能访问类变量,而不能访问实例变量,例如这里,只能访问 self.Name,不能访问self.PropertyName
def Show(self):
#todo
@staticmethod #定义静态方法,这里原本hellow的调用,可以 instance.hellow()即可,不用传参,而这里,要变成 instance.hellow2(instance),或者 ClassName.hellow2(instance)
def hellow2(self):
print("my name is %s" ,self.Name)
@fullInfo.setter #定义可改属性,使用的时候,直接 instance.fullinfo = "aaa"
def fullinfo(self,Name)
self.Name=Name
@fullinfo.deleter,使用的时候,就可以 del instance.fullinfo ,那么就会调用这里的代码了
def fullinfo(self)
self.isdelete = true;
def __getitem__(self, key): #内置函数,相当于C#中的索引器 调用 result
=
obj[
'k1'
] ,
自动触发执行 __getitem__
print('__getitem__',key)
def __setitem__(self, key, value): #内置函数,相当于C#中的索引器 调用 obj[
'k2'
]
=
'alex' ,
自动触发执行 __setitem__
print('__setitem__',key,value)
def __delitem__(self, key):
print('__delitem__',key)
//self相当于this的意思
(以上的类属性,相当于c#中的类的静态成员)
类的继承:
**************导入包的两中办法******************
1.全部导入 import 包名 ,一般是文件名,类似于 demo.py,
那么,实例化时,就要 a = new demo.Class()
2.部分导入 from demo import Class1,Class2,仅仅导入Class1和Class2
3.导入所有 from demo inport *,导入所有;
4.导入特殊模块
import os #会默认去默认的路径下去找
******************************************************************************************************************************************
//关于构造函数
class childClass(father1,father2):#可以多重继承
def__init__(self):
#自己的构造方法,不会默认调用父类的构造方法,如果想掉,要
super()#这样子来掉父类的构造方法
******************************************************************************************************************************************
子类直接写方法,如果跟父类方法名一致,就直接覆盖了
******************************************************************************************************************************************
//关于多重继承的构造函数
多重继承的supper():如果 father1继承于father2 (他们都写了构造函数),
child继承与father1和father2,那么father1和father2的构造函数仅仅会被调用一次,而不会 father1调一次fanther2, father2又调一次它自己的。
******************************************************************************************************************************************
//创建类的私有属性
class myclass:
__privateProperty = "aaaa" #这个为私有属性,特点是在前面加两个"_",那么就跟C#的私有属性一样了
//
//python是没有 protect 属性的