Bts____
2021-04-23 15:48
采纳率: 50%
浏览 115

定义一个类,及其私有属性和方法并访问成员方法

自定义学生类Student,成员包含:实例属性sno、sname、age,类属性count,实例方法show(用于显示sno、sname、age信息),类方法classAddCount(实现count属性累加1),静态方法staticShowCount(显示当前count值)。要求属性全部为私有。并完成如下问题:

(1)创建两个Student对象,分别访问上述成员方法,同时用类名访问上述成员方法,输 出结果。      

(2)为Student对象动态增加新成员性别sex和方法setGrade(设置学生年级)     

(3)在类外部访问sno私有实例属性     

(4)我们知道,若在类外部通过对象尝试修改age值是允许的,但是直接修改属性值可能带来一些问题。例如,可能直接设置成不合法的值,如age=-10。所以,为了避免客户端直接修改属性的问题,请在类中提供get()方法返回age的值,以及set()方法设置age的新值,age>0时设置成为新值,age<=0时,提示设置年龄不合法。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 已采纳

    class Student:

     

        _count = 0

     

        @classmethod

        def classAddCount(cls):

            cls._count += 1

     

        @staticmethod

        def staticShowCount():

            print(Student._count)

     

        def __init__(self):

            pass

        

     

    点赞 评论
  • 这个很简单的,你自己先写一下。哪里不会再来问

    点赞 评论
  •  

    class Student:
    
        __count = 0
    
        @classmethod
        def classAddCount(cls):
            cls.__count += 1
    
        @staticmethod
        def staticShowCount():
            print(Student.__count)
    
        def __init__(self,sno,sname,age):
            self.__sno = sno
            self.__sname = sname
            self.__age = age
    
        def show(self):
            print(f"sno:{self.__sno}、sname:{self.__sname}、age:{self.__age}")
    
        @property
        def age(self):
            return self.__age
    
        @age.setter
        def age(self, value):
            if isinstance(value, int) and value>0:
                self.__age = value
            else:
                print("设置年龄不合法")
    
    st1 = Student("0005","aaa",19)
    st1.age = "vb"
    print(st1.age)
    st1.age = -1
    print(st1.age)
    st1.age = 111
    print(st1.age)
    st1.show()
    
    
    Student.classAddCount()
    Student.classAddCount()
    Student.staticShowCount()
    
    点赞 评论
  • 天元浪子 2021-04-23 17:34
    >>> class Student:
    	__count = 0
    	def __init__(self, sno, sname, age):
    		self.__sno = sno
    		self.__sname = sname
    		self.__age = age
    		self.sex = None
    		self.grade = None
    	@classmethod
    	def classAddCount(cls):
    		cls.__count += 1
    	@staticmethod
    	def staticShowCount():
    		print(Student.__conut)
    	def setSex(self, sex):
    		self.sex = sex
    	def setGrade(self, grade):
    		self.grade = grade
    	def set(self, age):
    		if age > 0:
    			self.__age = age
    		else:
    			print('设置年龄不合法')
    	def get(self):
    		return self.__age
    
    	
    >>> a = Student(5, 'Xufive', 10)
    >>> b = Student(8, 'ChenIrene', 9)
    点赞 评论
  • 有问必答小助手 2021-04-23 18:50

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论
  • 有问必答小助手 2021-04-26 15:58

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 评论

相关推荐 更多相似问题