python学习笔记--面向对象之类的创建

1、Student.py 

'''
面向对象
__init__方法相当于Java中的构造方法
变量名修饰:
_xxx:"单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问;不能用'from module import *'导入
__xxx:类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。)," 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
__xxx__:系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,用于预定义的特殊属性

类属性与实例属性的区别:实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

类方法:在方法上加@classmethod修饰,该方法就成了类方法
主:因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
'''
class Student:
    #类属性
    domina="Chinese"
    def __init__(self,id,name,age,income,address,**kw):
        #实例属性
        self.id=id;
        self.name=name;
        self.age=age;
        #private私有属性
        self.__income=income;
        self._address=address;
        #遍历将动态值设置进去
        for k,v in kw.items():
            setattr(self, k, v);
    #私有属性访问修改
    def getIncome(self):
        return self.__income;
    def setIncome(self,income):
        self.__income=income;
    #类方法,相当于Java中的静态方法
    @classmethod
    def getDomina(self):
        return self.domina;

2、Test.py

from oo.Student import Student
student=Student("STU0001","张三",20,5000,"广西")
print(student.domina)
student._address="广西1"
print(student._address)
#动态赋值
student2=Student("STU0001","张三",20,5000,"广西",aa="ahsh",bb="ssssss")
print(student2.aa)
#访问类属性
print(Student.domina)
'''
当实例属性和类属性重名时,实例属性优先级高
'''
print("student.domina",student.domina)
#这句话实际上是创建了一个实例属性
student.domina="中国"
print("student.domina",student.domina)
#我们可以看到用类名进行访问时,输入的值仍然是Chinese
print("类名进行访问:",Student.domina)
print("student2.domina",student2.domina)
#调用类方法
print("调用类方法:",Student.getDomina())

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值