1. 程式人生 > >小白學python之訪問限制_學習筆記

小白學python之訪問限制_學習筆記

本文以廖雪峰的官方網站為參考來學習python的。其學習連結為廖雪峰小白學python教程

本文是學習到python的訪問限制。參考連結廖雪峰python訪問限制

class Student(object):

    def __init__(self,name,score):
        self.__name= name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))

bart = Student('Bart Simpson',59)
bart.__name

執行結果為 :

Traceback (most recent call last):
  File "**********", line 11, in <module>
    bart.__name
AttributeError: 'Student' object has no attribute '__name'

無法訪問例項變數。

如果輸入程式碼

bart.print_score()

則會得到結果:

Bart Simpson: 59

 

class Student(object):

    def __init__(self,name,score):
        self.__name= name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))

    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score

bart.print_score()
print(bart.get_name())
print(bart.get_score())

輸入上面程式碼可以得到:

Bart Simpson: 59
Bart Simpson
59

現在可以訪問例項變數了。

 

class Student(object):

    def __init__(self,name,score):
        self.__name= name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))

    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score

    def set_score(self,score):
        if 0 <= score <= 100:
            self.__score = score
        else:
            raise ValueError('bad score')

輸入程式碼:

bart.set_score(99)
bart.print_score()
print(bart.get_score())

可以得到:

Bart Simpson: 99
99


# -*- coding: utf-8 -*-
class Student(object):
    def __init__(self,name,gender):
        self.name = name
        self.gender = gender

    def get_gender(self):
        return self.gender;

    def set_gender(self,gender):
        self.gender = gender

# 測試:
bart = Student('Bart', 'male')
print(bart.get_gender)
print(bart.get_gender())
print(type(bart.get_gender()))
print(type('male'))
if bart.get_gender() != 'male':
    print('測試失敗!')
    print(bart.get_gender())
else:
    bart.set_gender('female')
    print(bart.get_gender())
    if bart.get_gender() != 'female':
        print('測試失敗!')
    else:
        print('測試成功!')

以上為文章結尾測試題目和本人做的答案。

編譯結果為

<bound method Student.get_gender of <__main__.Student object at 0x00000000021B1DD8>>
male
<class 'str'>
<class 'str'>
female
測試成功!